📄 udpsocket.cpp
字号:
#include "stdafx.h"
#include "UDPSocket.h"
CUDPSocket::CUDPSocket()
{
created=FALSE;
}
CUDPSocket::~CUDPSocket()
{
if(created)
{
Close();
}
}
BOOL CUDPSocket::Create(int nPort)
{
if(created)
return FALSE;
char hostname[128]="";
char hostip[128]="";
SOCKADDR_IN sockAddr;
memset(&sockAddr, 0, sizeof(sockAddr));
int nSockAddrLen = sizeof(sockAddr);
gethostname(hostname,sizeof(hostname));
DWORD dwMyAddress;
struct hostent *h = (struct hostent *) ::gethostbyname(hostname);
memcpy(&dwMyAddress, h->h_addr_list[0], sizeof(DWORD));
if (dwMyAddress == INADDR_NONE)
return FALSE;
struct in_addr tAddr;
memcpy(&tAddr,&dwMyAddress,sizeof(DWORD));
char* ptr = ::inet_ntoa(tAddr);
strcpy(hostip, ptr);
if(!s1.Create(nPort, hostip))
{
int ret=GetLastError();
return FALSE;
}
if(!s2.Create(0,hostip))
{
s1.Close();
return FALSE;
}
created=TRUE;
return TRUE;
}
int CUDPSocket::SendTo(char* lBuf, int bufsize, int destPort, char* destIP)
{
if(!created)
return -1;
return s2.SendTo(lBuf, bufsize, destPort, destIP);
}
int CUDPSocket::ReceiveFrom(char* lBuf, int bufsize, char* addr)
{
if(!created)
return -1;
char addr1[16];
int ret=s1.ReceiveFrom(lBuf, bufsize, addr1);
if(ret>0)
{
strcpy(addr, addr1);
}
return ret;
}
BOOL CUDPSocket::Close()
{
if(created)
{
s1.Close();
s2.Close();
created=FALSE;
return TRUE;
}
return FALSE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -