本篇文章参考《Java网络编程精解》, 作者为孙卫琴, 出版社为电子工业出版社
需要依赖javax.servlet.jar,可以在jdk的lib下找到
入口类Server.java
package com.zibra.server;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketException;
public class Server {
public static void main(String[] args) {
try {
// 邦定本机ip:127.0.0.1 端口:9999 连接队列:10
// ServerSocket 构造方法的连接队列(backlog) 参数用来显式设置连接请求队列的长度
ServerSocket serverSocket = new ServerSocket(9999, 10, InetAddress.getByName("127.0.0.1"));
// 如果服务端口处于正常状态
while (serverSocket.isBound() && !serverSocket.isClosed()) {
try {
try {
// 接受端口请求数据
Socket socket = serverSocket.accept();
// 执行业务代码
// 处理结束后关闭连接
// 未释放请求数超过连接队列报:
// Exception in thread "main" java.net.ConnectException: Connection refused: connect
socket.close();
} catch (SocketException socketException) {
// 捕捉客户端断开连接异常,防止破坏整个服务
if ("Connection reset by peer".equals(socketException.getMessage())) {
socketException.printStackTrace();
} else {
throw socketException;
}
}
} catch (Exception e) {
e.printStackTrace();
if (null != serverSocket && !serverSocket.isClosed()) {
serverSocket.close();
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
System.exit(1);
}
}
监听9999端口,最大可以同时响应10个请求