接收端: #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; }