发送端: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 40000
struct msg
{
int MsgID;
char UserID[20];
char Pwd[20];
};