Linux学习-网络编程2
1.tcp可能出现粘包
解决:要让消息之间有边界
1.结束标志 \r\n
2.固定长度
3.协议结构体
2.recv和send
recv
原型:ssize_t recv(int sockfd, void *buf, size_t len, int flags); 功能:从sockfd接收信息 参数:sockfd:要操作的socketbuf:存放数据的空间len:buf的大小flags:制定读取信息的操作标志 MSG_DONTWAIT 返回值:成功返回读取到的字节数失败返回-1
send
原型:ssize_t send(int sockfd, const void *buf, size_t len, int flags); 功能:发送信息到socket里面 参数:sockfd:要操作的socketbuf:存放数据的空间len:buf的大小flags:操作标志 MSG_DONTWAIT 返回值:成功返回读取到的字节数失败返回-1
udp编程
1.模型
c/s
udp 客户端 //主动 socket sendto ...recvfrom closeudp 服务器端 //被动 socket bind recvfrom ... printf sendtoclose
2.函数
sendto
原型:ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,const struct sockaddr *dest_addr, socklen_t addrlen); 功能:向socket中发送信息 参数:sockfd:要操作的socketbuf:存放数据的空间len:buf的大小flags:操作标志 MSG_DONTWAITdest_addr:要发送到的目的地址addrlen:地址大小 返回值:成功返回发送的字节数失败返回-1
recvfrom
原型:ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,struct sockaddr *src_addr, socklen_t *addrlen); 功能:从socket中接收信息 参数:sockfd:要操作的socketbuf:存放数据的空间len:buf的大小flags:制定读取信息的操作标志 MSG_DONTWAITsrc_addr:保存客户端的地址信息addrlen:值结果参数 返回值:成功返回读到的字节数失败返回-1