Linux實現UDP連線

2021-08-03 20:24:18 字數 1847 閱讀 6319

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...