用socaket编写客户端与服务端程序相互发送消息

//运行环境:eclipse || MyEclipse

package socaket;

//这些类全放在socaket的包下

//这是服务器端消息发送类

import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;

public class ServerChatSend extends Thread {
//服务端发送线程
 Socket ssk = null;
//构造函数
 ServerChatSend(Socket sk) {
  this.ssk = sk;
 }

public void serverChatSend() {
  try {
//   Socket sk = ssk.accept();
   PrintWriter pw = new PrintWriter(ssk.getOutputStream());
   Scanner scan = new Scanner(System.in);
   String meg = null;
   while((meg = scan.nextLine())!= null) {
    pw.println(meg);
    pw.flush();
   }
  } catch (IOException e) {
   e.printStackTrace();
  }
 }
 @Override
 public void run() {
  serverChatSend();
 }

}

---------------------------------------------------------------

package socaket;

//服务端消息接收

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;

//服务器端接收线程
public class ServerChatReceive extends Thread {
 private Socket sk = null;
//构造器
 public ServerChatReceive(Socket sk) {
  this.sk = sk;
 }

public void serverChatReceive() {
  try {
   BufferedReader bfr = new BufferedReader(new InputStreamReader(
     sk.getInputStream()));
   String meg =null;
   while ((meg = bfr.readLine()) != null) {
    System.out.println("Client: " + meg);
   }
  } catch (IOException e) {
   e.printStackTrace();
  }
 }
 
 public void serverFileReceive(){
  
 }
@Override
 public void run() {
  serverChatReceive();
 }
}

--------------------------------------------------------

//客户端消息发送

package socaket;

import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;

//客户端发送线程
public class ClientChatSend extends Thread {
 private Socket sk=null;
// 构造函数
 ClientChatSend(Socket sk){
  this.sk=sk;
 }

public void clientChatSend() {
  try {
   Scanner scan = new Scanner(System.in);
   PrintWriter pw = new PrintWriter(sk.getOutputStream());
   String meg = null;
   while(true){
   if((meg =scan.nextLine())!= null) {
    pw.println(meg);
    pw.flush();
   }
   }
  } catch (UnknownHostException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }

}
 @Override
 public void run() {
  clientChatSend();
 }

}

--------------------------------------------------------

//客户端消息接收

package socaket;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;

//客户端接收线程
public class ClientChatReceive extends Thread{
 private Socket sk=null;
 
 ClientChatReceive(Socket sk){
  this.sk=sk;
 }
// 消息的接收
 public void clientChatReceive(){
  try {
   
   BufferedReader bfr=new BufferedReader(new InputStreamReader(sk.getInputStream()));
   String meg=null;
   while((meg=bfr.readLine())!=null){
    System.out.println("Server: "+meg);
   }
  } catch (UnknownHostException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
 }
 @Override
 public void run() {
  clientChatReceive();
 }
}

-------------------------------------------------------

//服务端主方法

package socaket;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class ServerChat {
// 服务端主程序
 public static void main(String[] args) {
  try {
//   建立连接
   ServerSocket ssk = new ServerSocket(1234);
   Socket sk = ssk.accept();
//   创建对象
   ServerChatReceive scr = new ServerChatReceive(sk);
   ServerChatSend scs = new ServerChatSend(sk);
//   启动线程
   scr.start();
   scs.start();
   System.out.println("服务器端程序已启动!");

} catch (IOException e) {
   e.printStackTrace();
  }
 }

}

-----------------------------------------------------------

//客户端主方法

package socaket;

import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;

public class ClientChat {
// 客户端主程序
 public static void main(String[] args) {
  try {
//   本机的连接测试
   Socket sk = new Socket("127.0.0.1", 1234);
   ClientChatReceive ccr=new ClientChatReceive(sk);
   ClientChatSend ccs=new ClientChatSend(sk);
//   线程的启动
   ccr.start();
   ccs.start();
   System.out.println("客户端程序已经启动!");
  } catch (UnknownHostException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
  
 }

}

-------------------------------------

备注:大家在运行时先运行服务端主方法,再运行客户端主方法就可以相互发送消息了,这里的程序是在本机上测试,如果要和别人测试的话,一个运行客户端,一个运行服务端,改好相应的IP和端口号就可以了>_<注意哦,不管怎样测试,先开服务器端就对了

时间: 2024-10-12 04:53:08

用socaket编写客户端与服务端程序相互发送消息的相关文章

Android 客户端与服务端JSP相互传递中文

为了兼容简体.繁体及其他语系,推荐使用UTF-8编码. 首选,我们看看Android端应该怎么做: 在发送前,应该对参数值要进行UTF-8编码,我写了一个static的 转换函数,在做发送动作前用它将参数值转换成utf8编码: public class NetUtil { static public String toUtf8Url(String value) { try { return java.net.URLEncoder.encode(value, "utf8"); } cat

基于socket.io客户端与服务端的相互通讯

socket.io是对websocket的封装,用于客户端与服务端的相互通讯.官网:https://socket.io/. 下面是socket.io的用法: 1.由于使用express开的本地服务,先下载相关依赖 cnpm install express socket.io 2.服务端代码 const express = require("express"); const io = require("socket.io"); const app = express(

c#Socket客户端和服务端的信息发送

这是我制作的界面信息,c# Socket通信的简单使用,刚开始学习,不对的地方请大家指教,目前是可以运行的,之后自己在慢慢添加新的东西.同时了解Tcp协议的三次握手.希望对跟我一样的初学者有所帮助. 客户端: 服务端:

Client(客户端) / Server(服务端) 程序

1. 客户端程序 import java.io.*; import java.net.*; public class Client { public static void main(String args[]) { try{ Socket socket=new Socket("127.0.0.1",4700); //向本机的4700端口发出客户请求 BufferedReader in=new BufferedReader(new InputStreamReader(System.in

python3中实现客户端与服务端交互发送文件

在python3中实现客户端与服务端程序交互,从客户端发送文件到服务端 客户端代码:client.py #!/usr/bin/env python #_*_ encoding=utf-8 _*_ import socket,sys,os ip_port = ('127.0.0.1',9999) sk = socket.socket() sk.connect(ip_port) container = {'key':'','data':''} while True:     input_data =

警察与小偷的实现之一客户端与服务端通信

来源于ISCC 2012 破解关第四题 目的是通过逆向police,实现一个thief,能够与police进行通信 实际上就是一个RSA加密通信的例子,我们通过自己编写客户端和服务端来实现上面的thief和police的功能.. 要通信,这们这次先通过python写出可以进行网络连接的客户端与服务端.. 服务端代码 #!/usr/bin/env python import SocketServer from time import ctime HOST = '127.0.0.1' PORT =

[Java]命令行模拟TCP客户端与服务端的简单小程序遇到的问题(基础不牢!扎实和亲手实践比什么都重要!)

简单得不能再简单的需求: 简单模拟TCP客户端与服务端的一次连接和通信,客户端发出一个消息,服务端回馈一个消息 自己第一次编写的代码: Client: class TcpClient1 { public static void main(String[] args) throws Exception { Socket s=new Socket("127.0.0.1",10010); OutputStream out=s.getOutputStream(); out.write(&quo

socket的客户端和服务端(Windows控制台程序)

首先是两个程序,分别是socket的客户端和服务端.(在windows系统vc6.0编译)服务器端:#include <Winsock2.h>#include <stdio.h>#pragma comment(lib,"WS2_32.lib")void main(){    WSADATA wsd;    SOCKET server;                                            //服务器socket    SOCKAD

第5章-unix网络编程 TCP/服务端程序示例

这一章主要是完成一个完整的tcp客户/服务器程序.通过一很简单的例子.弄清客户和服务器如何启动,如何终止,发生了某些错误会发生什么.这些事很重要的 客户端代码 #include "unp.h" //static void str_cli1(FILE*fp,int sockfd); int main(int argc,char *argv[]) { int sockfd; struct sockaddr_in servaddr; sockfd=Socket(AF_INET,SOCK_ST