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
相关推荐
中议视控42 分钟前
会议室和展厅分布式网络中控系统主机的选购思路
网络·分布式
默默开发2 小时前
完整版:本地电脑 + WiFi 搭建 AI 自动炒股 + 自我学习系统
人工智能·学习·电脑
for_ever_love__2 小时前
Objective-C学习 NSSet 和 NSMutableSet 功能详解
开发语言·学习·ios·objective-c
sdm0704273 小时前
yum和开发工具vim/gcc
linux·服务器·centos
LCMICRO-133108477463 小时前
长芯微LD9689完全P2P替代AD9689,是一款双通道、14位、2.0 GSPS/2.6 GSPS模数转换器(ADC)
网络·单片机·嵌入式硬件·网络协议·fpga开发·硬件工程·高速adc
如意.7598 小时前
【Linux开发工具实战】Git、GDB与CGDB从入门到精通
linux·运维·git
Thera7779 小时前
C++ 高性能时间轮定时器:从单例设计到 Linux timerfd 深度优化
linux·开发语言·c++
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ10 小时前
Linux 查询某进程文件所在路径 命令
linux·运维·服务器
盐水冰10 小时前
【烘焙坊项目】后端搭建(12) - 订单状态定时处理,来单提醒和顾客催单
java·后端·学习
Hello小赵10 小时前
视频压缩编码学习(一)—— 基础知识大集合
学习