服务器端 1 #define _CRT_SECURE_NO_WARNINGS 2 #include <stdio.h> 3 #include <string.h> 4 #include <winsock.h> 5 #pragma comment(lib,"ws2_32.lib") 6 7 void main() 8 { 9 WORD wversion;//存放版本 10 WSADATA wsadata;//指针,存放网络执行信息 11 int err;//管理错误,标号 12 13 SOCKET socksever;//服务器套接字 14 //记录服务器信息 15 SOCKADDR_IN addrserver; 16 //记录客户端信息 17 SOCKADDR_IN addrclienet; 18 19 int length = 0; 20 char sendstr[256] = { 0 }; 21 BOOL bflags = 1;//标示 22 wversion = MAKEWORD(2, 2);//设定版本 23 err = WSAStartup(wversion, &wsadata); 24 if (err != 0) 25 { 26 printf("获取版本失败"); 27 return; 28 } 29 30 if (LOBYTE(wsadata.wVersion) != 2 || HIBYTE(wsadata.wVersion) != 2) 31 { 32 printf("版本对比失败,不一致"); 33 return; 34 } 35 36 socksever = socket(AF_INET, SOCK_DGRAM, 0);//报文 37 // SO_BROADCAST多播必须指定的参数 38 //flags设定,1代表广播,0禁止广播 39 setsockopt(socksever, SOL_SOCKET, SO_BROADCAST, &bflags, sizeof(bflags));//绑定 40 41 addrserver.sin_addr.S_un.S_addr = htonl(INADDR_ANY);//任意主机 42 addrserver.sin_family = AF_INET; 43 addrserver.sin_port = htons(7888);//端口 44 45 //服务器信息与套接字绑定 46 bind(socksever, (SOCKADDR*)&addrserver, sizeof(SOCKADDR));//绑定 47 48 //填写广播,255.255.255.255,广播 49 addrclienet.sin_addr.S_un.S_addr = inet_addr("255.255.255.255"); 50 addrclienet.sin_family = AF_INET; 51 addrclienet.sin_port = htons(9999);//端口 52 53 length = sizeof(SOCKADDR);//保存地址长度 54 55 while (1) 56 { 57 memset(sendstr, 0, 256); 58 scanf("%s", sendstr);//获取读取 59 //发送消息到客户端(广播) 60 sendto(socksever, sendstr, strlen(sendstr), 0, (SOCKADDR*)&addrclienet, length); 61 } 62 closesocket(socksever); 63 WSACleanup(); 64 system("pause"); 65 }
转载于:https://www.cnblogs.com/xiaochi/p/8494504.html
相关资源:c# UDP 局域网异步通讯实现广播,接收发送string数据