网络编程小结

本文详细介绍了TCP和UDP的区别,TCP作为面向连接的协议,提供高可靠性通信,常用于大量数据传输;而UDP则是无连接的,适用于小数据快速传输、广播和组播。同时,阐述了socket套接字在TCP/UDP通信中的应用,包括流式套接字和用户报套接字。还讨论了TCP的粘包问题及其解决方案,并提及了IO多路复用在处理多路输入输出流时的重要性。
摘要由CSDN通过智能技术生成

 1.TCP和UDP

1.1共同点:

同属于传输层协议

1.2不同点:

TCP:有连接,可靠

UDP:没有连接,不保证可靠

1.3TCP(传输控制协议)

(1)是一种面向连接的传输层协议

(2)能提供高可靠通信

通常用于对数据传输质量要求较高,或传输大量数据的通信

1.4UDP(用户数据报协议)

(1)是一种无面向连接的传输层协议

(2)不能提供高可靠通信

通常用于小尺寸数据的发送、网络应答困难、广播和组播的通信

2.socket套接字

是一种通用的网络编程接口,一个特殊的文件描述符

流式套接字(SOCK_STREAM)--》TCP

用户报套接字(SOCK_DGRAM)-->UDP

原始套接字(SOCK_RAW)

3.TCP服务端/客户端通信

3.1socket函数

创建socket对象:

int socket_fd=socket(AF_INET,SOCK_STREAM,0);

AF_INET:网络协议

SOCK_STREAM:使用的是TCP通信

3.2connect函数

请求连接

3.3send/recv函数

发送/接受

3.4bind函数

服务器端用来绑定自己的IP地址和端口号

3.5listen函数

服务器端用来监听是否有客户端请求连接

3.6accept函数

用来获取连接的客户端的IP地址和端口号

4.TCP的粘包问题

4.1原因:

(1)信道拥挤

(2)读写速率不匹配

4.2解决方法

(1)使用延时

(2)使用相同大小的缓存,使得读写保持一致

(3)对粘和的包进行解析

5.IO多路复用

5.1

 

5.2使用IP多路复用的原因

应用程序中同时处理多路输入输出流,如采用阻塞模式达不到效果

若采用非阻塞模式,则需要进行轮询,太浪费CUP的时间

若设置多进程,则会产生进程进的同步和通信的问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十三州府TD

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值