socket注意事项

Socket TCP流程图
Socket UDP流程图

Socket TCP 和 UDP最大的区别就是:
UDP 套接字没有 listen

TCP 套接字使用recv()/send(), UDP 套接字使用 recvfrom()/sendto()

TCP关闭的两种方式

  • 主动关闭一段发送 FIN, 被动关闭一段回应 ACK,并发送 FIN, 主动关闭一端发送 ACK。这是优雅的关闭连接,保证所有数据都能正确发送接收。
  • 一方发送 RST, 对方收到该报文,立刻断开连接。

shutdown()和close()的区别

  1. 调用close(), 它会将文件描述符的调用减一,仅在该计数变为 0 的时候才关闭套接字; 而 shutdown() 将直接激发TCP 关闭套接字。
  2. close()终止两个方向的传输;shutdown() 可以选择只关闭 或者 或者读写都关闭。

recv()返回的三种情况

  1. 如果对端发送 TCP 数据, 套接字变为可读,返回一个大于0的数,这个数就是对方发送数据的字节数。
  2. 如果对端发送 FIN, 套接字变为可读, 返回 0(EOF), 表示对方关闭连接。
  3. 如果对端发送 RST(对端主机崩溃,并重新启动), 套接字变为可读, 返回 -1errno包含明确的错误码。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1、TCP状态linux查看tcp的状态命令:1)、netstat -nat 查看TCP各个状态的数量2)、lso...
    北辰青阅读 13,184评论 0 11
  • 最近在看《UNIX网络编程 卷1》和《FREEBSD操作系统设计与实现》这两本书,我重点关注了TCP协议相关的内容...
    腩啵兔子阅读 4,955评论 0 7
  • 《UNIX 网络编程卷一:套接字联网API》笔记 套接字 套接字编程接口,是在 TCP/IP 协议族中,应用层进入...
    超net阅读 11,128评论 2 13
  • 套接字选项SO_RESUEADDR 即使端口处于2MSL状态,使用该选项,仍然能够在该端口建立连接。服务器常会设置...
    Myth52125阅读 5,289评论 0 0
  • 日子在轮回中远去念念的行走感受江湖的风雨回望那深沉的夜色空洞的灵魂在游荡想想那一抹的夕阳我何曾醉过自己的故乡又何曾...
    昊水长天阅读 1,463评论 0 1

友情链接更多精彩内容