C/C++教程

2.socket编程

本文主要是介绍2.socket编程,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

TCP和UDP的区别
1、TCP是面向链接的,TCP的三次握手在最低限度上(实际上也很大程度上保证了)保证了连接的可靠性;
2、而UDP不是面向连接的,UDP传送数据前并不与对方建立连接,对接收到的数据也不发送确认信号,发送端不知道数据是否会正确接收,当然也不用重发,所以说UDP是无连接的、不可靠的一种数据传输协议。
3、也正由于上面的特点,使得UDP的开销更小数据传输速率更高,因为不必进行收发数据的确认,所以UDP的实时性更好。

在这里插入图片描述
在这里插入图片描述
这里的sockaddr结构体: 16字节。

在这里插入图片描述
注意这里的结构体的字节数,下面要强制转换成另一个结构体。
在这里插入图片描述
在这里插入图片描述
如何填充:
在这里插入图片描述
在这里插入图片描述
int listen( int sockfd, int backlog);
sockfd:用于标识一个已捆绑未连接套接口的描述字。
backlog:等待连接队列的最大长度。

listen()为申请进入的连接建立一个后备日志,并排队等待被接受(用accept()接受连接)。这个函数特别适用于同时有多个连接请求的服务器;如果当一个连接请求到来时,队列已满,那么客户将收到一个WSAECONNREFUSED错误。

注意accept步骤上面还有个listen函数步骤。listen函数没啥难度特殊的这里不做介绍。
在这里插入图片描述
这个是客户端使用的函数: 结构体还是一样的。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
Recv等待所有用MSG-WAITALL
在这里插入图片描述
服务端close后,客户端也可以收到recv,之后退出。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

这篇关于2.socket编程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!