公司开发需要用到socket通信的一些应用,所以就大体了解了一些其中的原理,看了一些视频,模仿做了一个聊天室。
聊天室的开发需要在服务器端记录每一个连接的socket,并向各个客户端发送消息。
服务端代码如下:因为accept()是一个阻塞函数,所以应该放在一个线程中,并保持一直监听状态。
package com.jld.textmyserversocket.main;
public class MyServerSocket {
public static void main(String[] args) {
new ServerListener().start();
}
}
package com.jld.textmyserversocket.main;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import javax.swing.JOptionPane;
public class ServerListener extends Thread {
@Override
public void run() {
//1-65535
try {
ServerSocket serverSocket = new ServerSocket(12345);
while (true) {
//block
Socket socket = serverSocket.accept();
//建立连接
JOptionPane.showMessageDialog(null, "有客户端链接到了本机的12345端口");
//将socket传递给新的线程
ChatSocket cs = new ChatSocket(socket);
cs.start();
ChatManager.getChatManager().add(cs);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
package com.jld.textmyserversocket.main;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import