接收端: #include<stdlib.h> //#include<iostream.h> #include <conio.h> #include <stdio.h> #include <winsock2.h> #include <windows.h> #pragma comment ( lib , "ws2_32.lib" ) void main( void ) { SOCKET s; sockaddr_in from,a; WSADATA wsdata; BOOL optval; //启?动??SOCKET库a,??版??本??为a2.0 WSAStartup(0x0202,&wsdata); optval=TRUE; //然??后??赋3值??给?两??个?地??址??,??一??个?用??来???绑???定??套???接??字??,??一??个?用??来???从???网??络?上??的??广?播??地??址??接??收??消?息??;?? a.sin_family=AF_INET; a.sin_addr.s_addr=0; a.sin_port=htons(5050);
from.sin_family=AF_INET; from.sin_addr.s_addr=INADDR_BROADCAST; from.sin_port=htons(5050); int fromlength= sizeof (SOCKADDR); //用??UDP初?始??化??套???接??字?? s=socket(AF_INET,SOCK_DGRAM,0); //设???置?该?套???接??字??为a广?播??类???型??,?? setsockopt(s,SOL_SOCKET,SO_BROADCAST,( char FAR *)&optval, sizeof (optval)); bind(s,(sockaddr *)&a, sizeof (sockaddr_in)); char buf[256]; while (1) { //从???广?播??地??址??接??收??消?息??,??注???意?a用??来???绑???定??的??地??址??和??接??收??消?息??的??地??址??是??不?一??样??的?? recvfrom(s,buf,256,0,( struct sockaddr FAR *)&from,( int FAR *)&fromlength); Sleep(2000); printf( "%s\n" ,buf); ZeroMemory(buf,256); } }
发送端: #include <stdlib.h> //#include<iostream.h> #include <stdio.h> #include <conio.h> #include <winsock2.h> #include <windows.h>
#pragma comment ( lib , "ws2_32.lib" ) int main() { SOCKET s; sockaddr_in addrto; WSADATA wsdata; BOOL bsocket; char *smsg= "this is a test wyj" ; //启?动??SOCKET库a,??版??本??为a2.0 WSAStartup(0x0202,&wsdata); s=WSASocket(AF_INET,SOCK_DGRAM,0,NULL,0,WSA_FLAG_OVERLAPPED); bsocket=TRUE; //然??后??赋3值??给?地??址??,??用??来???从???网??络?上??的??广?播??地??址??接??收??消?息??;?? addrto.sin_family=AF_INET; addrto.sin_addr.s_addr=INADDR_BROADCAST; addrto.sin_port=htons(5050); bool opt= true ; //设???置?该?套???接??字??为a广?播??类???型??,?? setsockopt(s,SOL_SOCKET,SO_BROADCAST,( char FAR *)&opt, sizeof (opt)); int nlen= sizeof (addrto); while (1) { Sleep(1000); //从???广?播??地??址??发???送??消?息?? int ret=sendto(s,smsg,strlen(smsg),0,(sockaddr*)&addrto,nlen); if (ret==SOCKET_ERROR) printf( "Error:%s\n" , WSAGetLastError()); else { printf( "ok" ); } }
return -1; }