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
相关推荐
报错小能手12 分钟前
linux学习笔记(18)进程间通讯——共享内存
linux·服务器·前端
第四维度420 分钟前
【全志V821_FoxPi】6-2 IMX219 MIPI摄像头适配
linux·ipc·tina·v821·imx219
杜子不疼.22 分钟前
【Linux】进程的初步探险:基本概念与基本操作
linux·人工智能·ai
wdfk_prog25 分钟前
构建基于Hexo、Butterfly、GitHub与Cloudflare的高性能个人博客
笔记·学习·github·hexo·blog
shixian103041137 分钟前
Django 学习日志
数据库·学习·sqlite
de之梦-御风1 小时前
【Linux】 开启关闭MediaMTX服务
linux·运维·服务器
Morphlng1 小时前
wstunnel 实现ssh跳板连接
linux·服务器·网络·ssh
星如雨落1 小时前
Linux VScode 安装PHP环境
linux·php·visual studio code
丰锋ff2 小时前
2013 年真题配套词汇单词笔记(考研真相)
笔记·学习·考研
小小程序媛(*^▽^*)2 小时前
第十二届全国社会媒体处理大会笔记
人工智能·笔记·学习·ai