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