Java ServerSocket与Socket交互

ServerSocket与Socket的区别
ServerSocket
ServerSocket对象可以监听一个固定的端口,但不能主动发起连接。
- 创建ServerSocket通过构造函数,可以确定监听端口(port)**、客户端连接请求的队列长度(backlog)、服务端绑定IP(bindAddr)**。
1
2
3
4ServerSocket() throws IOException;
ServerSocket(int port) throws IOException;
ServerSocket(int port, int backlog) throws IOException;
ServerSocket(int port, int backlog, InetAddress bindAddr) throws IOException;
如果端口被占用或者没有权限使用某些端口会抛出BindException错误。譬如1~1023的端口需要管理员才拥有权限绑定。
如果设置端口为0,则系统会自动为其分配一个端口。
监听端口
1
Socket client = serverSocket.accept();
accept()函数可以使Server端的程序处于等待状态,程序将一直阻塞直到捕捉到一个来自Client端的请求,并返回一个用于与该Client通信的Socket对象。此后Server程序只要向这个Socket对象读写数据,就可以实现向远端的Client读写数据。结束监听时。关闭ServerSocket
1
serverSocket.close();
在关闭ServerSocket后,将释放其绑定的端口。

