本文在 nodelover.me 同步发布。
基础要点
服务器编程,其实就是 Socket 编程,而 HTTP 请求是一种特殊的 Socket,要实现监听某一个端口接受请求,我们就必须要用到Java 的ServerSocket类。
我们看一下它的构造器
public ServerSocket(
int port,
int backlog,
InetAddress bindAddr
) throws IOException
port 监听端口
backlog 监听队列长度
bindAddr IP 地址
ServerSocket有一个队列,存放还没有来得及处理的客户端Socket,这个队列的容量就是backlog的含义。
那么客户端的 socket 连接过来,我们如何拿到 socket 呢?
答案就是 accept, 这个方法是在 ServerSocket 的实例上面。
public Socket accept() throws IOException {
if (isClosed())
throw new SocketException("Socket is closed");
if (!isBound())
throw new SocketException("Socket is not bound yet");
Socket s = new Socket((SocketImpl) null);
implAccept(s);
return s;
}
accept 方法就是创建了一个空的 Socket 然后交给