使用 Java Socket 开发多线程聊天程序
如果使用单线程开发Socket应用,那么同一时间,要么收消息,要么发消息,不能同时进行。
为了实现同时收发消息,就需要用到多线程
在练习-服务端和客户端互聊中,只能一人说一句,说了之后,必须等待另一个人的回复,才能说下一句。
这是因为接受和发送都在主线程中,不能同时进行。
为了实现同时收发消息,基本设计思路是把收发分别放在不同的线程中进行。
//SendThread 发送消息线程
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;
public class SendThread extends Thread{
private Socket s;
public SendThread(Socket s) {
this.s = s;
}
public void run() {
try {
OutputStream os = s.getOutputStream();
DataOutputStream dos = new DataOutputStream(os);
while