如果有多个客户端接入,都可以发送消息给服务器,但服务器只和最后一个客户聊天。,如果要实现群聊的话,只要把所有的socket保存到集合中,有客户输入时遍历socket得到输出流并把消息广播给各个客户端就行了。
四个读写的线程类都是一样的,可以进行封装,这里就不封装了。
Server服务器主程序
package server;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
private ServerSocket serversocket;
//构造方法
public Server() {
try {
// 得到服务器套接字
serversocket = new ServerSocket(8888);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void start() {
try {
while (true) {
// 等待客户端接入,并通过 套接字得到socket
Socket socket = serversocket.accept();
System.out.println("有客户接入了");
new Thread(new ServerReaderThread(socket)).start();
new Thread(new ServerWriterThread(socket)).start();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStac