socket编程

TCP过程

客户端:

  1. 创建socket
  2. 绑定ip、端口号到socket字
  3. 连接服务器,connect()
  4. 收发数据,send()、recv()
  5. 关闭连接

服务器端:

  1. 创建socket字
  2. 设置socket属性
  3. 绑定ip与端口号
  4. 开启监听,listen()
  5. 接受发送端的连接accept()
  6. 收发数据send()、recv()
  7. 关闭网络连接
  8. 关闭监听

对应关系:

客户端的connect()指向服务器端的accept()

客户端、服务器端的send()/recv()是双向箭头的关系。

客户端不需要bind的原因

采用TCP通信时,客户端不需要bind()他自己的IP和端口号,而服务器必须要bind()自己本机的IP和端口号

因为服务器总是被动方,需要在一个众所周知的端口上等待连接请求,而且作为服务器它的端口号应该是固定的。服务器bind一个端口就表示会在这个端口提供一些特殊的服务。 
    而客户端它是主动发起方,我们并不关心是客户端的哪个端口和服务器建立了连接。内核会自动为我们分配一个随机的不冲突的端口号,如果我们对客户端bind的话,反而有可能导致端口冲突。
客户端不是不能绑定,是可以绑定,但容易发生端口冲突,所以不建议绑定,即不需要绑定

UDP过程 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值