发送端:server.cpp
#include <winsock2.h>#include <stdlib.h>#include <stdio.h>#include "head.h"int main(){ WSADATA wsaData; //指向WinSocket信息结构的指针 SOCKET sockListener; SOCKADDR_IN sin,saUdpServ; BOOL fBroadcast = TRUE; //char sendBuff[1024]; int nSize; int ncount=0; if(WSAStartup(MAKEWORD( 1, 1 ), &wsaData )!=0)//进行WinSocket的初始化 { printf("Cant initiates windows socket!Program stop./n"); return -1; } sockListener=socket(PF_INET,SOCK_DGRAM,0); setsockopt ( sockListener,SOL_SOCKET,SO_BROADCAST, (CHAR *)&fBroadcast,sizeof ( BOOL )); sin.sin_family = AF_INET; sin.sin_port = htons(0); sin.sin_addr.s_addr = htonl(INADDR_ANY); if(bind( sockListener, (SOCKADDR *)&sin, sizeof(sin))!=0) { printf("Cant bind socket to local port!Program stop./n");//初始化失败返回-1 return -1; } saUdpServ.sin_family = AF_INET; saUdpServ.sin_addr.s_addr = htonl ( INADDR_BROADCAST ); saUdpServ.sin_port = htons (7001);//发送用的端口,可以根据需要更改 nSize = sizeof ( SOCKADDR_IN ); struct msg m_msg; m_msg.MsgID = ID_DETECTION; while(1) { //sprintf(sendBuff,"Message %d",ncount++); sendto ( sockListener,(char*)&m_msg, sizeof(m_msg),0,(SOCKADDR *) &saUdpServ,sizeof ( SOCKADDR_IN )); printf("ii"); } return 0;}
接收端:client.cpp
#include <winsock2.h>#include <stdlib.h>#include <stdio.h>#include <conio.h>#include "head.h"int main(int argc, char* argv[]){ WSADATA wsaData; //指向WinSocket信息结构的指针 SOCKET sockListener; SOCKADDR_IN sin,saClient; //char cRecvBuff[1024]; struct msg m_msg; int nSize,nbSize; int iAddrLen=sizeof(saClient); if(WSAStartup(MAKEWORD( 1, 1 ), &wsaData )!=0)//进行WinSocket的初始化 { printf("Cant initiates windows socket!Program stop./n");//初始化失败返回-1 return -1; } sockListener=socket(AF_INET, SOCK_DGRAM,0); sin.sin_family = AF_INET; sin.sin_port = htons(PORT);//发送端使用的发送端口,可以根据需要更改 sin.sin_addr.s_addr = htonl(INADDR_ANY); if(bind( sockListener, (SOCKADDR FAR *)&sin, sizeof(sin))!=0) { printf("Cant bind socket to local port!Program stop./n");//初始化失败返回-1 return -1; } while(1) { nSize = sizeof ( SOCKADDR_IN ); if((nbSize=recvfrom (sockListener,(char*)&m_msg,sizeof(m_msg),0,(SOCKADDR FAR *) &saClient,&nSize))==SOCKET_ERROR) { printf("Recive Error"); break; } if(m_msg.MsgID == ID_DETECTION) { printf("received detect/n"); m_msg.MsgID = ID_DETECTIONOK; sendto ( sockListener,(char*)&m_msg, sizeof(m_msg),0,(SOCKADDR *) &saClient,sizeof ( SOCKADDR_IN )); } } return 0;}
头文件:head.cpp
#define ID_LOGIN 3000#define ID_LOGINOK 3001#define ID_LOGINFAIL 3002#define ID_BEGINRTP 3003#define ID_ENDRTP 3004
#define ID_DETECTION 4000#define ID_DETECTIONOK 4001#define PORT 40000struct msg{ int MsgID; char UserID[20]; char Pwd[20];};
