服务器
package ThreadDemo.HM1.Threaddemo3;
/*
2.在客户端与服务器聊天中引入线程,
将发送消息和接收消息功能分别加入到线程中实现.
*/
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket=new ServerSocket(9999);
System.out.println("服务器创建成功");
Socket socket=serverSocket.accept();
System.out.println("服务器-客户端:连接成功");
Reciver1 reciver1 = new Reciver1(socket);
reciver1.setName("服务器");
reciver1.start();
Send send = new Send(socket);
send.setName("服务器");
send.start();
}
}
客户端
package ThreadDemo.HM1.Threaddemo3;
import java.io.IOException;
import java.net.Socket;
public class Client {
public static void main(String[] args) throws IOException {
Socket socket = new Socket("127.0.0.1", 9999);
System.out.println("服务器-客户端:连接成功");
Reciver1 reciver1 = new Reciver1(socket);
reciver1.setName("客户端");
reciver1.start();
Send send = new Send(socket);
send.setName("客户端");
send.start();
}
}
发送线程
package ThreadDemo.HM1.Threaddemo3;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.util.Scanner;
public class Send extends Thread{
Socket socket;
DataOutputStream outputStream;
public Send(Socket socket) throws IOException {
this.socket=socket;
outputStream=new DataOutputStream(socket.getOutputStream());
}
@Override
public void run() {
while (true){
Scanner scanner=new Scanner(System.in);
String str=null;
str=scanner.next();
try {
outputStream.writeUTF(str);
System.out.println(Thread.currentThread().getName()+":"+str);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
接受线程
package ThreadDemo.HM1.Threaddemo3;
import java.io.DataInputStream;
import java.io.IOException;
import java.net.Socket;
public class Reciver1 extends Thread{
Socket socket;
DataInputStream dataInputStream;
public Reciver1(Socket socket) throws IOException {
this.socket=socket;
this.dataInputStream=new DataInputStream(socket.getInputStream());
}
@Override
public void run() {
while (true){
try {
if(Thread.currentThread().getName().equals("客户端"))
System.out.println("服务器"+":"+dataInputStream.readUTF());
else System.out.println("客户端"+":"+dataInputStream.readUTF());
} catch (IOException e) {
e.printStackTrace();
}
}
}
}