成功: 返回读到的字节数
失败: 返回 -1 设置errno
调用该函数相当于TCP通信的recv+函数
(int , const void *buf,len, int flags,
const*,);
函数说明: 发送数据
参数说明:
? 套接字
? 目的地址
? 目的地址长度
?返回值
成功: 返回写入的字节数
失败: 返回-1,设置errno
UDP的服务器编码流程:
?创建套接字 type=
?绑定ip和端口
?while(1)
收发消–
发消息–
?关闭套接字–close
UDP客户端流程:
?创建套接字–
?while(1)
收发消–
发消息–
?关闭套接字–close
编写udp代码并进行测试
测试:
多开器几个客户端经过测试表明:, udp天然支持多客户端, 这点和TCP不同, TCP需要维护连接.
使用nc命令进行测试: nc -u 127.1 8888
02-.c
//udp客户端#include #include #include #include #include
01-.c
//udp服务端#include #include #include #include #include
本地通信
通过查询: man 7 unix 可以查到unix本地域通信相关信息:
#
#
int (int , int type, int );
函数说明: 创建本地域
文章插图
函数参数:
:or
type: 或者
: 0 表示使用默认协议
函数返回值:
成功: 返回文件描述符.
失败: 返回-1, 并设置errno值.
创建成功以后, 会在内核创建缓冲区, 下图是客户端和服务端内核缓冲区示意图.
int bind(int , const*addr,);
函数说明: 绑定套接字
函数参数:
: 由函数返回的文件描述符
addr: 本地地址
: 本地地址长度
函数返回值:
成功: 返回文件描述符.
失败: 返回-1, 并设置errno值.
需要注意的是: bind函数会自动创建文件, 若在调用bind函数之前文件已经存在, 则调用bind会报错, 可以使用函数在bind之前先删除文件.
{
; /*or */
char [108]; /**/
};
通过man 2 bind, 可以查看bind函数的相关信息, 后面还有示例代码, 可以参考.
本地套接字服务器的流程:
?可以使用TCP的方式, 必须按照tcp的流程
?也可以使用UDP的方式, 必须按照udp的流程
tcp的本地套接字服务器流程:
?创建套接字 (,,0)
?绑定&强转
?侦听
?获得新连接
?循环通信 read-write
?关闭文件描述符 close
- 动态行专列 【Mybatis实例】实现动态表头数据 、对动态表头字段排序
- 二 华为云上云实践:Linux 环境下对云硬盘 EVS 的创建、挂载和初始化
- 1 sklearn的学习笔记--决策树
- 如何让ChatGPT生成图片?
- 真土豪、IPO成功最高可获3730万奖励, 注册地迁移扶持2000万
- word表格的行高怎么调整
- Neo4j和Cypher快速入门
- 【go】go 实现行专列 将集合进行转列
- 如何将高德、百度、腾讯、必应、ArcGIS地图下载到本机?
- 一篇文章了解 Docker 的安装、启动以及工作原理!