Java网络编程:Socket客户端深入解析
1. Java Socket基础特性
1.1 紧急数据处理
在Java中,默认情况下会忽略从套接字接收到的紧急数据。若要将紧急数据与常规数据一起接收,需使用以下方法将 OOBINLINE
选项设置为 true
:
public void setOOBInline(boolean on) throws SocketException // Java 1.3
public boolean getOOBInline( ) throws SocketException // Java 1.3
OOBInline
的默认值为 false
。以下代码片段可在其关闭时将其开启:
if (s.getOOBInline( )) s.setOOBInline(true);
开启 OOBInline
后,到达的任何紧急数据将被放置在套接字的输入流中,以常规方式读取,Java不会区分紧急数据和非紧急数据。
1.2 地址重用(SO_REUSEADDR)
当套接字关闭时,它可能不会立即释放本地地址,特别是在关闭时连接处于打开状态。有时它会等待一小段时间,以确保接收在关闭套接字时仍在网络中传输的、发往该端口的任何延迟数据包。系统不会对收到的延迟数据包做任何处理,