为什么TCP服务端需要调用bind函数而客户端通常不需要()
在cmd中查看连接情况, 结果如下:
C:\Documents and Settings\Administrator>netstat -nao | findstr 8888TCP
0.0.0.0:88880.0.0.0:0LISTENING11256TCP
127.0.0.1:2964127.0.0.1:8888ESTABLISHED13688TCP
127.0.0.1:8888127.0.0.1:2964ESTABLISHED11256
【为什么TCP服务端需要调用bind函数而客户端通常不需要()】可以看到, 客户端的端口号是2964. 实际上, 这个端口号是操作系统随机分配的, 在分配的时候, 操作系统会保证不与现有的端口冲突。 好, 关掉这两个进程。 我们再重启服务端, 然后再重启客户端, 建立新的tcp连接, 我们再在cmd中查一次, 结果 我们发现, 客户端的端口编程了3156, 和上次的 2964不一致, 这就印证了
操作系统会随机分配客户端端口
这个说法。那强行bind可不可行呢?
- 如果你够无聊, 那也可以用一下bind. 在这里, 我要说一下了: 客户端用bind的程序很容易出问题, 你想想啊, 操作系统指定的不会冲突的随机端口难道不比你自己指定的容易冲突的固定端口好?
推荐阅读
- CVE-2020-16898|CVE-2020-16898 TCP/IP远程代码执行漏洞
- 为什么你的路演总会超时()
- 财商智慧课(六)
- 吃了早餐,反而容易饿(为什么?)
- 社保代缴公司服务费包含哪些
- 为什么越花钱的人越有钱,越舍不得花钱的人却越穷()
- dubbo基本认识
- 为什么985/211的学生能胜任工作获得老板的青睐。
- 年轻人,干了孤独这杯酒
- 为什么孩子一定要学会可视化思维!