socket tcp和udp

1. tcp是一种面向连接的、可靠的、基于字节流的运输层通信协议。用8位字节表示的数据流然后TCP把数据流分割成适当长度的报文段(受到链路层最大传送单元(MTU)的限制)。tcp为了保证不发生丢包,就给每一个字节一个序号,同时序号也保证数据的顺序,然后接手端对成功收到的字节发送一个ack确认;如果在合理的时间内没有发送ack确认信息,那么tcp会将数据重传。tcp会校验数据是否有错。

2. udp是一种不可靠的网络协议。主要作用是将网络数据流量压缩成数据包的形式。一个典型的数据包就是一个二进制数据的传输单位。每一个数据包的前8个字节用来包含报头信息,剩余字节则用来包含具体的传输数据。

udp由于不能保证双方在线,所以,只有一方在线时(发送消息),另一方不会收到消息。

下面介绍socket当中的send、recv,sendto,recvfrom。

当使用TCP协议时,是双方建立在连接的基础上进行传输。一般使用send和recv来发送和接收。其实使用sendto,和recvfrom也可以,当sock用connect连接后,sendto和recvfrom函数中最后两个参数(发送/接收地址)会认为无效。

当使用UDP协议时,不是面向连接的。一般使用sendto,recvfrom来发送和接收。虽然udp协议不是面向连接的,但是在socket中,仍然可以用connect连接两个套接字,此时,我们也可以使用send,recv来发送和接收,发送和接收的地址就是connect连接的地址。

总结:send和recv是用于面向连接的套接字。

sendto和recvfrom可用于面向连接的套接字和非连接的套接字。只是当面向连接的套接字时,后两个表示目标地址的参数无效。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值