socket通信 方法解惑

来源:互联网 发布:我爱mac网站靠谱吗 编辑:程序博客网 时间:2024/06/14 10:32

1、对于客户端的一个Socket和其在客户端对应的Socket,他们两者在调用getLocalPort()、getPort()时的远程,本地概念都是对于自身来说的。

2、①Socket#setReuseAddress(true/false)要在Socket对象建立之前。

     ②ServerSocket同理,必须在bind()端口之前调用ServerSocket#setReuseAddress(true/false)。

      ③两个共用一个端口的进程必须都调用ServerSocket#Socket#setReuseAddress(true),才能保证别的进程能够立刻重用该端口。

3、Socket#setTimeout(t)要在接收数据(即:读取输入流之前设置),当超过了时间t还没有接收到数据就抛出一个SocketTimeoutException.不过要注意,抛出exception后SOcket对象仍然是连接的,还可以再次尝试读数据。

4、setSoLinger(true,0) 和setSoLinger(false,x)的效果是一样的。都是在调用Socket#close()Socket之后,立即关闭底层Socket.(停止了数据传输)



0 0