UDP+TCP

一、UDP协议

1.recvfrom:recvform(int sockfd,void *buf,size_t len,int flags,struct sockaddr *src_addr,socklen_t *addrlen);

参数:socket的fd; 保存数据的空间地址 ; 空间大小;

默认接收方式(默认阻塞)MSG_DONTWAIT不阻塞方式 没有东西就等待

用来保存发送方的地址信息;表示发送方发送实际的地址信息大小;

(如果不关系发送方信息,则后两个参数可以写为NULL)

成功返回接收到的字节数 失败返回-1

1)inet_ntoa()将网络的字节序变成字符串类型

2)ntohs()将网络的端口转换成主机号

3)当socket创建后没有地址绑定,bind就是绑定地址

2.bind:int bind(int sockfd,const struct sockaddr *addr,socklen_t addrlen);

功能:如果在服务端调用,则表示将参数1相关的文件描述符与参数2指定的接口地址关联

用于从该接口接收数据,若在客户端,则表示将数据从参数1所在的描述符中取出并

从参数2所在接口设备发送出去(一般客户端可以省略)

参数:sockfd 通过socket函数创建的文件描述符

套接字 id my_addr 是物理接口的结构体指针

客户端可以绑定地址,但一般不会绑定

如果服务器没有绑定地址,那么客户端会找不到

二、TCP

1.客户端过程:

1)建立连接:socket------bind(可选)------connect(发起连接)

connect:int connect(int sockfd,const struct sockaddr *addr,socklen_t addrlen)

参数:sockfd 本地创建的套接字

addr 远程目标主机的地址信息

addrlen 地址信息的长度

成功返回0 失败返回-1

2)通信过程:read-----write------close

2.服务器过程:

1)建立连接:socket------bind------listen------accept

2)通信过程:read-----write------close

3.TCP连接建立

1)TCP三次握手(建立连接)

2)TCP四次握手(断开链接)

4.listen :int listen(int sockfd,int backlog)反应监听那个套接字并且建立成功之后返回新的套接字

参数:当前套接字 同时监听的个数

成功返回新的套接字 失败返回-1

listen会标记一下被动的socket(这个socket被用来接收到来的接受请求)

有两个socket:一是监听的socket,二是处理建立连接的socket

相关推荐
筵陌3 小时前
Linux网络数据链路层
linux·网络
梁辰兴3 小时前
计算机网络基础:在 P2P 对等方中搜索对象
网络·计算机网络·计算机·p2p·计算机网络基础·梁辰兴
IT WorryFree3 小时前
FortiGate常用资产 OID 清单,配套 Excel 台账模板字段
网络·人工智能·excel
CryptoPP3 小时前
多市场行情 API 接入实战:一套接口打通股票/外汇/期货/加密货币 + WebSocket 实时推送
大数据·网络·人工智能·websocket·网络协议·金融·区块链
阿钱真强道4 小时前
29 鸿蒙LiteOS RK2206 Socket编程实战 UDP通信+LWIP原理全解析
udp·socket·鸿蒙·liteos·开源鸿蒙·瑞芯微·rk2206
陈猪的杰咪4 小时前
【2026最新指南】AI大模型API中转站选型参考:国内稳定接入ChatGPT、Claude、Gemini等主流模型实践分享
运维·网络·人工智能·chatgpt·架构
爱讲故事的4 小时前
计算机网络第四章复习:网络层 Data Plane 数据平面
网络·计算机网络·平面
云安全助手4 小时前
国内调用GPT的现实困境与聚合平台解决方案探析
网络·人工智能·网络安全·ai大模型
xlq223224 小时前
67.子网划分运营商
网络·智能路由器
小灰灰搞电子4 小时前
C++ boost::asio 详解:网络编程领域的“瑞士军刀“
网络·c++·boost