基於udp協議的c/s模型
ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,const struct sockaddr *dest_addr, socklen_t addrlen);
功能:udp協議專用的資料傳送函式
sockfd:套接字描述符
buf:待傳送的緩衝區首位址
len:待傳送的資料位元組數
flags:0阻塞,1不阻塞
dest_addr:目標計算機位址
addrlen:位址結構體的位元組數
返回值:成功傳送的位元組數
ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,struct sockaddr *src_addr, socklen_t *addrlen);
功能:udp協議專用的資料接收函式
sockfd:套接字描述符
buf:資料儲存位置
len:最大接收位元組數
flags:0阻塞,1不阻塞
src_addr:獲取傳送者的位址
addrlen:設定位址結構體的位元組數
返回值:成功接收的位元組數
程式設計模型:
server client
建立套接字(socket) 建立套接字(socket)
準備位址(本機位址sockaddr_in) 準備位址(目標機位址sockaddr_in)
繫結(bind(sockfd+addr)) …
接收請求(recvfrom) 傳送請求(sendto)
響應請求(sendto) 接收響應(recvfrom)
關閉套接字(close) 關閉套接字(close)
注意:從伺服器到客戶端返回的路線是udp協議自己設計的
客戶端程式在這裡插入**片
#include #include #include #include #include #include typedef struct sockaddr* sp;
int main()
struct sockaddr_in addr = {};
addr.sin_family = af_inet;
addr.sin_port = htons(6677);
addr.sin_addr.s_addr = inet_addr("47.97.229.46");
socklen_t len = sizeof(addr);
char buf[1024] = {};
for(;;)
recvfrom(sockfd,buf,sizeof(buf),0,(sp)&addr,&len);
printf("recv:%s\n",buf);
} close(sockfd);
}
#include#include#include#include#include#include#includeint main()
//準備位址
struct sockaddr_in addr={};
addr.sin_family = af_inet;
addr.sin_port = htons(7782);
addr.sin_addr.s_addr =inet_addr("172.20.10.2");
socklen_t len = sizeof(addr);
//繫結位址
if(bind(sockfd,(struct sockaddr*)&addr,len))
for(;;)
; int fd = recvfrom(sockfd,buf,sizeof(buf),0,(struct sockaddr*)&addr,&len);
printf("%s\n",buf);
if(0 == strcmp("quit",buf))
int fdd = sendto(sockfd,buf,strlen(buf)+1,0,(struct sockaddr*)&addr,len);
} close(sockfd);
}
網路通訊 udp協議
不同的協議就有不同 的插座 socket udp通訊協議的特點 1.將資料極封裝為資料報,面向無連線。2.每個資料報大小限制在64k中 3.因為無連線,所以不可靠 4.因為不需要建立連線,所以速度快 5.udp 通訊是不分服務端與客戶端的,只分傳送端與接收端。比如 物管的對講機,飛q聊天 遊戲.ud...
網路通訊協議 UDP
udp 是user dategram protocol 簡稱 使用者資料報協議 是osi參考模型當中的一種無連線的傳輸層協議,ietf rfc 768是udp的正式規範 udp 和 tcp協議一樣也是用於處理資料報,是一種無連線的傳輸層協議 補充 連線服務 例子 你要寄乙份信件,你要讓你認識的人去送...
linux網路通訊 UDP協議
udp程式設計模型 udp協議是長度固定的,無連線的不可靠報文傳遞,所以不像tcp協議那樣需要在傳送資料之前先建立連線 伺服器建立socket socket 繫結位址 bind 接收資料 recvfrom 傳送資料 sendto 結束連線 close 客戶機 建立socket socket 傳送資料...