C C 使用Socket通訊UDP

2022-04-11 23:37:17 字數 2196 閱讀 9011

接收端

1 #include 2 #include 3

4#pragma comment(lib,"ws2_32.lib")56

int main(void)7

; //

通訊資料緩衝區

13int nbuflen = 1024,nresult = 0, nsenderaddrsize = sizeof

(ssendaddr);

1415

//初始化socket2.2版本

16 nresult = wsastartup(makeword(2, 2), &wsd);

17if (nresult !=no_error)

1822

23//

建立乙個socket,sock_dgram表示udp型別

24 s =socket(af_inet, sock_dgram, ipproto_udp);

25if (s ==invalid_socket)

2630

31//

填充socket介面

32 srecvaddr.sin_family = af_inet; //

位址協議,af_inet支援tcp和udp

33 srecvaddr.sin_port = htons(uport); //

通訊埠,htons轉為網路位元組順序

34 srecvaddr.sin_addr.s_un.s_addr = htonl(inaddr_any); //

接收任意位址資料

3536

//繫結socket至本機

37 nresult = bind(s, (sockaddr *)&srecvaddr, sizeof

(srecvaddr));

38if (nresult != 0)39

4344 printf("

waiting recv data...\n");

45//

阻塞式接收資料

46 nresult = recvfrom(s, szbuf, nbuflen, 0, (sockaddr *)&ssendaddr, &nsenderaddrsize);

47if (nresult ==socket_error)

4851

else

55//

關閉socket連線

56 nresult =closesocket(s);

57if (nresult ==socket_error)

5862

//清理socket

63wsacleanup();

6465 system("

pause");

66return0;

67 }

傳送端

#include #include 

#include

#pragma comment(lib,"ws2_32.lib")

int main(void

) s = socket(af_inet, sock_dgram, 0

);

if (s ==invalid_socket)

sockaddr_in addr;

socket sockclient = socket(af_inet, sock_dgram, 0

); addr.sin_family =af_inet;

addr.sin_addr.s_un.s_addr = inet_addr("

172.18.0.67");

addr.sin_port = htons(1401

); sendto(sockclient,

"測試udp通訊!

", 50, 0, (sockaddr *)&addr, 50

); closesocket(s);

wsacleanup();

printf(

"hello world!\n");

system(

"pause");

return0;

}

效果圖

socket實現UDP通訊

udp與tcp不同,是一種無連線的通訊方式,相比tcp而言更加靈活。利用socket實現udp的方式相比tcp而言也更加簡單。傳送方 1.初始化套接字 2.建立socket 3.利用sendto傳送資料 tcp是send 4.關閉socket 接收方 1.初始化套接字 2.建立socket並與本機進...

C 通過socket實現UDP 通訊

接下來我們通過乙個簡單的程式看一下udp通訊的過程。服務端程式 using system using system.collections.generic using system.linq using system.text using system.threading.tasks using s...

socket通訊之 udp協議2

步驟 1.建立套接字 2.繫結ip 3.讀取資料 include include see notes include include include include define srv port 9999 int main int argc,char argv bind addr struct s...