美文网首页
socket注意事项

socket注意事项

作者: 狗尾巴草败了 | 来源:发表于2017-08-14 20:34 被阅读0次
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包含明确的错误码。

相关文章

网友评论

      本文标题:socket注意事项

      本文链接:https://www.haomeiwen.com/subject/pvcprxtx.html