UDP广播

来源:互联网 发布:java反序列化漏洞工具 编辑:程序博客网 时间:2024/04/28 16:08
服务器端#include<iostream>#include<WinSock2.h>using namespace std;#pragma comment(lib,"ws2_32.lib")int main(){WORD wVersionRequested;WSADATA wsaData;int err;wVersionRequested = MAKEWORD( 2, 2 );err = WSAStartup( wVersionRequested, &wsaData );if ( err != 0 ){return 0;}if ( LOBYTE( wsaData.wVersion ) != 2 ||HIBYTE( wsaData.wVersion ) != 2 ){WSACleanup( );return 0; }//创建socketSOCKET socketSevere=socket(AF_INET,SOCK_DGRAM, IPPROTO_UDP);if(INVALID_SOCKET==socketSevere){cout<<"socket at error"<<endl;return 0;}sockaddr_in RecvAddr;RecvAddr.sin_family = AF_INET;RecvAddr.sin_port = htons(1234);RecvAddr.sin_addr.s_addr = inet_addr("192.168.1.255");//没有绑定服务器//将当前套接字设置为广播类型bool bOptval = TRUE;setsockopt(socketSevere,SOL_SOCKET,SO_BROADCAST,(const char *)bOptval,sizeof(bool));//send tochar szbuf[1024]={0};while(1){cin>>szbuf;sendto(socketSevere,szbuf,1024,0,(SOCKADDR*)&RecvAddr,sizeof(sockaddr));}closesocket(socketSevere);WSACleanup();system("pause");return 0;}客户端#include<iostream>#include<WinSock2.h>using namespace std;#pragma comment(lib,"ws2_32.lib")int main(){//加载库WORD wVersionRequested;WSADATA wsaData;int err;wVersionRequested = MAKEWORD( 2, 2 );err = WSAStartup( wVersionRequested, &wsaData );if ( err != 0 ) {                     return 0;}if ( LOBYTE( wsaData.wVersion ) != 2 ||HIBYTE( wsaData.wVersion ) != 2 ) {WSACleanup( );return 0; }//创建socketSOCKET socketlisten=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);if(INVALID_SOCKET==socketlisten){cout<<"socket at error"<<endl;return 0;}sockaddr_in RecvAddr;RecvAddr.sin_family = AF_INET;RecvAddr.sin_port = htons(1234);RecvAddr.sin_addr.s_addr = inet_addr("192.168.1.121");if(SOCKET_ERROR==bind(socketlisten,(const sockaddr*)&RecvAddr,sizeof(sockaddr))){cout<<"bind at error"<<endl;}char szbuf[1024]={0};int nLen=sizeof(sockaddr_in);while(1){recvfrom(socketlisten,szbuf,1024,0,(SOCKADDR*)&RecvAddr,&nLen);cout<<szbuf<<endl;}closesocket(socketlisten);WSACleanup();system("pause");return 0;}

1 0