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
相关推荐
轻松Ai享生活10 小时前
5 节课深入学习Linux Cgroups
linux
白帽黑客沐瑶11 小时前
【网络安全就业】信息安全专业的就业前景(非常详细)零基础入门到精通,收藏这篇就够了
网络·安全·web安全·计算机·程序员·编程·网络安全就业
christine-rr11 小时前
linux常用命令(4)——压缩命令
linux·服务器·redis
三坛海会大神55511 小时前
LVS与Keepalived详解(二)LVS负载均衡实现实操
linux·负载均衡·lvs
東雪蓮☆11 小时前
深入理解 LVS-DR 模式与 Keepalived 高可用集群
linux·运维·服务器·lvs
树码小子11 小时前
Java网络编程:(socket API编程:TCP协议的 socket API -- 回显程序的服务器端程序的编写)
java·网络·tcp/ip
2303_Alpha12 小时前
SpringBoot
笔记·学习
乌萨奇也要立志学C++12 小时前
【Linux】进程概念(二):进程查看与 fork 初探
linux·运维·服务器
萘柰奈12 小时前
Unity学习----【进阶】TextMeshPro学习(三)--进阶知识点(TMP基础设置,材质球相关,两个辅助工具类)
学习·unity
沐矢羽12 小时前
Tomcat PUT方法任意写文件漏洞学习
学习·tomcat