windows C++ UDP 多播
其他
2018-05-25 16:14:11
阅读次数: 0
-
-
-
-
- #include <WinSock2.h>
- #include <stdio.h>
- #include <iostream>
- using namespace std;
-
- #pragma comment(lib, “ws2_32.lib”)
- const int MAX_BUF_LEN = 10;
-
- void main()
- {
- WORD wVersionRequested;
- WSADATA wsaData;
- int err;
-
-
- wVersionRequested = MAKEWORD(2, 2);
- err = WSAStartup(wVersionRequested, &wsaData);
- if (err != 0)
- {
- return;
- }
-
- if (LOBYTE(wsaData.wVersion) != 2 ||
- HIBYTE(wsaData.wVersion) != 2)
- {
- WSACleanup();
- return;
- }
-
-
- SOCKET connect_socket;
- connect_socket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
- if (INVALID_SOCKET == connect_socket)
- {
- err = WSAGetLastError();
- printf(“error! error code is %d/n”, err);
- return;
- }
-
- SOCKADDR_IN sin;
- sin.sin_family = AF_INET;
- sin.sin_port = htons(3779);
-
- sin.sin_addr.s_addr = inet_addr(“255.255.255.255”);
-
- bool bOpt = true;
-
- setsockopt(connect_socket, SOL_SOCKET, SO_BROADCAST, (char*)&bOpt, sizeof(bOpt));
-
- int nAddrLen = sizeof(SOCKADDR);
-
- char buff[MAX_BUF_LEN] = “”;
- while (1)
- {
- sprintf_s(buff, “%s”,“ss”);
-
-
- int nSendSize = sendto(connect_socket, buff, strlen(buff), 0, (SOCKADDR*)&sin, nAddrLen);
- if (SOCKET_ERROR == nSendSize)
- {
- err = WSAGetLastError();
- printf(“error!, error code is %d/n”, err);
- return;
- }
- printf(“Send: %s/n”, buff);
- Sleep(500);
- }
- }
-
-
-
-
- #include <WinSock2.h>
- #include <stdio.h>
-
- #pragma comment(lib, “ws2_32.lib”)
- const int MAX_BUF_LEN = 255;
-
- void main()
- {
- WORD wVersionRequested;
- WSADATA wsaData;
- int err;
-
-
- wVersionRequested = MAKEWORD(2, 2);
- err = WSAStartup(wVersionRequested, &wsaData);
- if (err != 0)
- {
- return;
- }
-
- if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2)
- {
- WSACleanup();
- return;
- }
-
-
- SOCKET connect_socket;
- connect_socket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
- if (INVALID_SOCKET == connect_socket)
- {
- err = WSAGetLastError();
- printf(“error! error code is %d/n”, err);
- return;
- }
-
-
- SOCKADDR_IN sin;
- sin.sin_family = AF_INET;
- sin.sin_port = htons(3779);
- sin.sin_addr.s_addr = 0;
-
-
- SOCKADDR_IN sin_from;
- sin_from.sin_family = AF_INET;
- sin_from.sin_port = htons(3779);
- sin_from.sin_addr.s_addr = INADDR_BROADCAST;
-
-
- bool bOpt = true;
- setsockopt(connect_socket, SOL_SOCKET, SO_BROADCAST, (char*)&bOpt, sizeof(bOpt));
-
-
- err = bind(connect_socket, (SOCKADDR*)&sin, sizeof(SOCKADDR));
- if (SOCKET_ERROR == err)
- {
- err = WSAGetLastError();
- printf(“error! error code is %d/n”, err);
- return;
- }
-
- int nAddrLen = sizeof(SOCKADDR);
- char buff[MAX_BUF_LEN] = “”;
- int nLoop = 0;
- while (1)
- {
-
- int nSendSize = recvfrom(connect_socket, buff, MAX_BUF_LEN, 0, (SOCKADDR*)&sin_from, &nAddrLen);
- if (SOCKET_ERROR == nSendSize)
- {
- err = WSAGetLastError();
- printf(“error! error code is %d/n”, err);
- return;
- }
- buff[nSendSize] = ‘/0’;
- printf(“Recv: %s/n”, buff);
- }
- }
转载自blog.csdn.net/anton8801/article/details/79877551