前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >socket快速理解

socket快速理解

作者头像
sean.liu
发布2022-08-03 14:58:50
1820
发布2022-08-03 14:58:50
举报

相信大家都知道,socket用于描述IP地址和端口,是一个通信链的句柄。但是如何使用它,它是如何通信的。

直接看代码或者函数说明可能有点乱。在这里给出一个直观清晰的解释。下图是tcp套接字的工作流程。然后再用类比说明让你快速明白工作流程。

tcp套接字流程

服务器端:

  1. 获取电话线        socket()
  2. 分配电话号码    bind()
  3. 等着电话打来    listen()
  4. 接听电话            accept()
  5. 相互交谈           read()/write()
  6. 挂断电话           close()

客户端:

  1. 获取电话线     socket()
  2. 呼叫服务器     connect()
  3. 相互交谈         read()/write()
  4. 挂断电话         close()

二者区别:

  • 服务端是需要绑定地址的bind()函数,客户端不需要。
  • 客户端用connect()链接,服务端用listen()等待,accept()接收。
  • 客户端挂断close()直接关掉整个socket(),但服务端不是,服务端close()传入的是accept()返回的描述符,不是socket()返回的描述符。因为一个服务端是可以链接多个客户端的,所以accept()一个链接,就会生成一个文件描述符,而客户端的socket是直接用socket()返回的描述符通信的
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2014年4月23日0,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 服务器端:
  • 客户端:
  • 二者区别:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档