65,186
社区成员




m_ServerSock.SetSockOpt(SO_RCVBUF,(const char*)&nRecvBuf,sizeof(int));
m_ServerSock.SetSockOpt(SO_SNDBUF,(const char*)&nSendBuf,sizeof(int));
setsockopt(m_ServerSock,SOL_SOCKET,SO_RCVBUF,(const char*)&nRecvBuf,sizeof(int));
setsockopt(m_ServerSock,SOL_SOCKET,SO_SNDBUF,(const char*)&nSendBuf,sizeof(int));
bool MsgReceive ()
{
if(false == m_bOpenStatus)return false;
char myBuffer[PLM_MAX_RECEIVE]; long len = 0; strReceiveMsg.Empty();
#ifdef _UNICODE
#pragma message("_UNICODE macro activated!")
USES_CONVERSION;
#endif
do //此处有微小的死锁隐患(概率不大)
{
memset(myBuffer, 0, PLM_MAX_RECEIVE * sizeof(char));
len = Receive(myBuffer, PLM_MAX_RECEIVE - 2);
if(SOCKET_ERROR == len)return false;
#ifdef _UNICODE
strReceiveMsg += A2W(myBuffer);
#else
strReceiveMsg += myBuffer;
#endif
}while(PLM_MAX_RECEIVE - 2 == len);
return true;
}
int nRecvBuf=32*1024;//设置为32K
setsockopt(s,SOL_SOCKET,SO_RCVBUF,(const char*)&nRecvBuf,sizeof(int));
setsockopt(s,SOL_SOCKET,SO_SNDBUF,(const char*)&nSendBuf,sizeof(int));
#include "stdafx.h"
#include "UDPRecver.h"
#include "AfxSock.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// The one and only application object
CWinApp theApp;
using namespace std;
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;
// initialize MFC and print and error on failure
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
// TODO: change error code to suit your needs
cerr << _T("Fatal Error: MFC initialization failed") << endl;
nRetCode = 1;
}
AfxSocketInit();
CSocket m_ServerSock;
m_ServerSock.Create(8021, SOCK_DGRAM);
BOOL bCmdOpt = TRUE;
m_ServerSock.SetSockOpt(SO_BROADCAST, (void*)&bCmdOpt,1);
while(1)
{
CString addr;
UINT port;
char buf[4096] = {0};
UINT recv_len = m_ServerSock.ReceiveFrom(buf, sizeof(buf), addr, port);
cout << "收到来自(" << (LPCSTR)addr <<":"<<port<<")的" << recv_len <<"字节,内容:" <<buf << endl;
}
return nRetCode;
}