udp是無連線不可靠的ip協議,和tcp有所不同。
udp伺服器呼叫socket(),bind(),listen()完成套接字初始化後,呼叫accept()阻塞等待處於監聽埠的狀態。
udp客戶端呼叫socket()初始化後,呼叫connect()傳送syn欄位並阻塞等待應答。
客戶端如果一直與服務端連線,服務端退出後重啟時,埠號已被占用,和tcp一直,具有time_wait特性。
**如下:
udp_server.c
1
#include
2#include
3#include
4#include
5#include
6#include
7#include
8#include
9static
void usage(const
char*proc)
10 13int main(int argc,char*argv)
14 20int sock=socket(af_inet,sock_dgram,0);
21if(sock<0)
22
2627
struct sockaddr_in local;
28 local.sin_family=af_inet;
29 local.sin_port=htons(atoi(argv[2]));
30 local.sin_addr.s_addr=inet_addr(argv[1]);
3132
if(bind(sock,(struct sockaddr*)&local,sizeof(local))<0)
36char buf[1024];
37while(1)
38
51 }
5253 close(sock);
54return
0; 55 }
udp_client.c
1
#include
2#include
3#include
4#include
5#include
6#include
7#include
8#include
9static
void usage(const
char*proc)
10 13int main(int argc,char*argv)
14 20int sock=socket(af_inet,sock_dgram,0);
21if(sock<0)
22
13int main(int argc,char*argv)
14 20int sock=socket(af_inet,sock_dgram,0);
21if(sock<0)
22
26struct sockaddr_in server;
27 server.sin_family=af_inet;
28 server.sin_port=htons(atoi(argv[2]));
29 server.sin_addr.s_addr=inet_addr(argv[1]);
3031
char buf[1024];
32while(1)
33
53 }
54 }
5556 close(sock);
57return
0; 58 }
UDP連線實現
伺服器端 include include void main if lobyte wsadata.wversion 1 hibyte wsadata.wversion 1 create socket socket socketsrv socket af inet,sock dgram,0 socka...
Linux下的UDP連線程式設計
udp是無連線不可靠的ip協議,和tcp有所不同。udp伺服器呼叫socket bind listen 完成套接字初始化後,呼叫accept 阻塞等待處於監聽埠的狀態。udp客戶端呼叫socket 初始化後,呼叫connect 傳送syn欄位並阻塞等待應答。客戶端如果一直與服務端連線,服務端退出後重...
Linux下 面向連線的 UDP通訊
1 編寫udp server程式的步驟 1 使用socket 來建立乙個udp socket,第二個引數為sock dgram。2 初始化sockaddr in結構的變數,並賦值 這裡使用 2030 作為服務程式的埠,使用 inaddr any 作為繫結的ip位址即任何主機上的位址。3 使用bind...