Linux学习-网络编程2

1.tcp可能出现粘包

解决:要让消息之间有边界

1.结束标志 \r\n

2.固定长度

3.协议结构体

2.recv和send

recv

cs 复制代码
原型:ssize_t recv(int sockfd, void *buf, size_t len, int flags);
功能:从sockfd接收信息
参数:
    sockfd:要操作的socket
    buf:存放数据的空间
    len:buf的大小
    flags:制定读取信息的操作标志    
            MSG_DONTWAIT
返回值:
    成功返回读取到的字节数
    失败返回-1

send

cs 复制代码
原型:ssize_t send(int sockfd, const void *buf, size_t len, int flags);
功能:发送信息到socket里面
参数:
    sockfd:要操作的socket
    buf:存放数据的空间
    len:buf的大小
    flags:操作标志    
            MSG_DONTWAIT
返回值:
    成功返回读取到的字节数
    失败返回-1

udp编程

1.模型

c/s

cs 复制代码
udp 客户端    //主动
socket
sendto
...

recvfrom
close

udp 服务器端    //被动
socket
bind
recvfrom
...
printf
sendto

close

2.函数

sendto

cs 复制代码
原型:ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,
                      const struct sockaddr *dest_addr, socklen_t addrlen);
功能:向socket中发送信息
参数:
    sockfd:要操作的socket
    buf:存放数据的空间
    len:buf的大小
    flags:操作标志    
            MSG_DONTWAIT
    dest_addr:要发送到的目的地址
    addrlen:地址大小
返回值:
    成功返回发送的字节数
    失败返回-1

recvfrom

cs 复制代码
原型:ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,
                        struct sockaddr *src_addr, socklen_t *addrlen);
功能:从socket中接收信息
参数:
    sockfd:要操作的socket
    buf:存放数据的空间
    len:buf的大小
    flags:制定读取信息的操作标志    
            MSG_DONTWAIT
    src_addr:保存客户端的地址信息
    addrlen:值结果参数
返回值:
    成功返回读到的字节数
    失败返回-1
相关推荐
charlie11451419137 分钟前
嵌入式现代C++教程: 构造函数优化:初始化列表 vs 成员赋值
开发语言·c++·笔记·学习·嵌入式·现代c++
IT=>小脑虎1 小时前
C++零基础衔接进阶知识点【详解版】
开发语言·c++·学习
#眼镜&1 小时前
嵌入式学习之路2
学习
码农小韩2 小时前
基于Linux的C++学习——指针
linux·开发语言·c++·学习·算法
Kevin Wang7272 小时前
欧拉系统服务部署注意事项
网络·windows
min1811234562 小时前
深度伪造内容的检测与溯源技术
大数据·网络·人工智能
微露清风2 小时前
系统性学习C++-第十九讲-unordered_map 和 unordered_set 的使用
开发语言·c++·学习
wdfk_prog2 小时前
[Linux]学习笔记系列 -- [fs]seq_file
linux·笔记·学习
汤愈韬2 小时前
Full Cone Nat
网络·网络协议·网络安全·security·huawei
Jay Chou why did2 小时前
wsl安装完无法进入wsl
linux