📄 sh_broadcast.cpp
字号:
// SH_Broadcast.cpp: implementation of the SH_Broadcast class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "SH_Broadcast.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
SH_Broadcast::SH_Broadcast()
{
SetPort(0);
}
SH_Broadcast::SH_Broadcast(UINT uPort)
{
SetPort(uPort);
}
SH_Broadcast::~SH_Broadcast()
{
}
UINT SH_Broadcast::GetPort() const
{
return m_uPort;
}
VOID SH_Broadcast::SetPort(UINT uPort)
{
m_uPort = uPort;
}
BOOL SH_Broadcast::CreateSender()
{
LONG opt = 1;
if(!Open(AF_INET,SOCK_STREAM,0))
return FALSE;
if(!SetSockOpt(SOL_SOCKET,SO_BROADCAST,(char*)&opt,sizeof(opt)))
return FALSE;
return TRUE;
}
BOOL SH_Broadcast::CreateSender(UINT uPort)
{
SetPort(uPort);
return CreateSender();
}
BOOL SH_Broadcast::CreateReceiver()
{
LONG opt = 1;
if(!Open(AF_INET,SOCK_STREAM,0))
return FALSE;
if(!SetSockOpt(SOL_SOCKET,SO_REUSEADDR,(char*)&opt,sizeof(opt)))
return FALSE;
if(!SetSockOpt(SOL_SOCKET,SO_BROADCAST,(char*)&opt,sizeof(opt)))
return FALSE;
if(!Bind(INADDR_ANY,m_uPort))
return FALSE;
return SelectEx(FD_READ);
}
BOOL SH_Broadcast::CreateReceiver(UINT uPort)
{
SetPort(uPort);
return CreateReceiver();
}
int SH_Broadcast::Broadcast(const char * buffer,int len)
{
struct sockaddr_in addr;
memset(&addr,0,sizeof(struct sockaddr_in));
addr.sin_family = AF_INET;
addr.sin_port = htons(m_uPort);
addr.sin_addr.s_addr = inet_addr("255.255.255.255");
return SendTo(buffer,len,(struct sockaddr*)&addr);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -