伺服器端**:
#include
#include
void main()
if(lobyte(wsadata.wversion)!=1 ||
hibyte(wsadata.wversion)!=1)
//create socket
socket socketsrv=socket(af_inet,sock_dgram,0);
sockaddr_in addrsrv;
addrsrv.sin_addr.s_un.s_addr=htonl(inaddr_any);
addrsrv.sin_family=af_inet;
addrsrv.sin_port=htons(6000);
//bind
bind(socketsrv,(sockaddr*)&addrsrv,sizeof(sockaddr));
//wait and receive data
sockaddr_in addrclient;
int len=sizeof(sockaddr);
char recvbuf[100];
while(1)
//close socket
closesocket(socketsrv);
wsacleanup();
}客戶端**:
#include
#include
void main()
if(lobyte(wsadata.wversion)!=1 ||
hibyte(wsadata.wversion)!=1)
//create socket
socket sockclient=socket(af_inet,sock_dgram,0);
sockaddr_in addrsrv;
addrsrv.sin_addr.s_un.s_addr=inet_addr("127.0.0.1");
addrsrv.sin_family=af_inet;
addrsrv.sin_port=htons(6000);
//send data
sendto(sockclient,"hello yuwei",strlen("hello yuwei")+1,0,
(sockaddr*)&addrsrv,sizeof(sockaddr));
//close socket
closesocket(sockclient);
wsacleanup();
}
Linux實現UDP連線
udp是無連線不可靠的ip協議,和tcp有所不同。udp伺服器呼叫socket bind listen 完成套接字初始化後,呼叫accept 阻塞等待處於監聽埠的狀態。udp客戶端呼叫socket 初始化後,呼叫connect 傳送syn欄位並阻塞等待應答。客戶端如果一直與服務端連線,服務端退出後重...
socket連線監聽udp包
用的2010的vc 版本,設定很簡單,就是一般的設定,就可以監聽了。但主要說一些配置外的。這裡可能用自定義訊息,1 利用方法send message 控制代碼名,0,0 傳送訊息。新增控制代碼時,應先定義 define receive data wm user 100 注意後面的wm user 10...
可靠的UDP連線 MTU MSS
這個網頁裡面寫了 其可靠性必須由上層應用實現。一般都會採用訊息重傳來實現其可靠性,採用訊息重傳的時候有兩種方式,一種是傳送者發起,另一種是接收者發起。前一種接收者發的是ack。傳送者收到ack,就不重傳。但是可能ack內爆。第二種接收者發的是nack。傳送者收到nack,就重傳。但是可能nack內爆...