一.客户端的创建
1.我们可以用Socket来创建客户端
/**
*@类名 Client
*@描述 TODO 客户端 1
*@版本 1.0
*@创建人 XuKang
*@创建时间 2020/9/24 16:18
**/
public class Client {
public static void main(String[] args) throws UnknownHostException, IOException {
System.out.println("-----Client1-----");
BufferedReader br =new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入用户名:");
String name =br.readLine();
//1、建立连接: 使用Socket创建客户端 +服务的地址和端口
Socket client =new Socket("localhost",8888);
//2、客户端发送消息
new Thread(new Send(client,name)).start();
new Thread(new Receive(client)).start();
}
}
2.这时我们需要接受其他客户端发送的数据,我们需要创建一个客户端的接收方法和发送方法,我可以用阻塞式的方式进行接收和发送,考虑到多线程的安全性,可以实现Runnable
1.Send发送端:
/**
*@类名 Send
*@描述 TODO 使用多线程封装:发送端
*@版本 1.0
*@创建人 XuKang
*@创建时间 2020/9/24 16:23
**/
public class Send implements Runnable {
private BufferedReader console ;
private DataOutputStream dos;
private Socket client;
private boolean isRunning;
private String name;
public Send(Socket client,String name) {
this.client =client;
console =new BufferedReader(new InputStreamReader(System.in));
this.isRunning = true;
this.name = name;
try {
dos =new DataOutputStream(client.getOutputStream());
//发送名称
send(name);
} catch (IOException e) {
System.out.println("==1==");
this.release();
}
}
@Override
public void run() {
while(isRunning) {
String msg = getStrFromConsole(