Socket长连接的实现就是在通讯完后不关闭socket及输入输出
/**
* @author :zhaoyu
* @date :Created in 2019/1/24 8:45
*/
@Data
@Component
@PropertySource("classpath:socket.properties")
public class DelongServerSocket {
@Value("${socket.port}")
private Integer port;
private boolean started;
private ServerSocket ss;
public static ConcurrentHashMap<String, ClientSocket> clientsMap = new ConcurrentHashMap<>();
private ExecutorService executorService = Executors.newCachedThreadPool();
public static void main(String[] args) {
new DelongServerSocket().start(10086);
}
public void start() {
start(null);
}
public void start(Integer port) {
try {
ss = new ServerSocket(port == null ? this.port : port);
started = true;
System.out.println("端口已开启,占用10086端口号....");
} catch (Exception e) {
System.out.println("端口使用中....");
System.out.println("请关掉相关程序并重新运行服务器!");
e.printStackTrace();
System.exit(0);
}
try {
while (started) {
Socket socket = ss.accept();
socket.setKeepAlive(true);
ClientSocket register = ClientSocket.register(socket);