在cmd中查看连接情况, 结果如下:
C:\Documents and Settings\Administrator>netstat -nao | findstr 8888 TCP
0.0.0.0:8888 0.0.0.0:0 LISTENING 11256 TCP
127.0.0.1:2964 127.0.0.1:8888 ESTABLISHED 13688 TCP
127.0.0.1:8888 127.0.0.1:2964 ESTABLISHED 11256
可以看到, 客户端的端口号是2964. 实际上, 这个端口号是操作系统随机分配的, 在分配的时候, 操作系统会保证不与现有的端口冲突。 好, 关掉这两个进程。 我们再重启服务端, 然后再重启客户端, 建立新的tcp连接, 我们再在cmd中查一次, 结果 我们发现, 客户端的端口编程了3156, 和上次的 2964不一致, 这就印证了操作系统会随机分配客户端端口
这个说法。
那强行bind可不可行呢?
- 如果你够无聊, 那也可以用一下bind. 在这里, 我要说一下了: 客户端用bind的程序很容易出问题, 你想想啊, 操作系统指定的不会冲突的随机端口难道不比你自己指定的容易冲突的固定端口好?