为什么TCP服务端需要调用bind函数而客户端通常不需要?


在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的程序很容易出问题, 你想想啊, 操作系统指定的不会冲突的随机端口难道不比你自己指定的容易冲突的固定端口好?
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,569评论 19 139
  • 名词延伸 通俗的说,域名就相当于一个家庭的门牌号码,别人通过这个号码可以很容易的找到你。如果把IP地址比作一间房子...
    杨大虾阅读 20,811评论 2 56
  • 1、第八章 Samba服务器2、第八章 NFS服务器3、第十章 Linux下DNS服务器配站点,域名解析概念命令:...
    哈熝少主阅读 3,906评论 0 10
  • 1、TCP状态linux查看tcp的状态命令:1)、netstat -nat 查看TCP各个状态的数量2)、lso...
    北辰青阅读 9,721评论 0 11
  • 功能统计一个文件夹中所有指定后缀名文件中的数据行数 应用场景统计项目代码行数 代码 用例
    PyKailyn阅读 1,144评论 0 0

友情链接更多精彩内容