📄 mysocket.cpp
字号:
#include ".\mysocket.h"
CMySocket::CMySocket(void)
{
}
CMySocket::~CMySocket(void)
{
}
bool CMySocket::InitSocket()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 2, 2 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 )
{
return false;
}
if ( LOBYTE( wsaData.wVersion ) != 2 ||
HIBYTE( wsaData.wVersion ) != 2 )
{
WSACleanup( );
return false;
}
m_socket=socket(AF_INET , SOCK_DGRAM , 0);
return true;
}
void CMySocket::SetSrvIP(char* chIP , USHORT port)
{
m_addrSrv.sin_addr.S_un.S_addr=inet_addr(chIP);
m_addrSrv.sin_family=AF_INET;
m_addrSrv.sin_port=htons(port);
}
void CMySocket::SetSrvIP(USHORT _port)
{
m_addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
m_addrSrv.sin_family=AF_INET;
m_addrSrv.sin_port=htons(_port);
}
bool CMySocket::SetBind(int type)
{
if (type==BIND_SRV)
{
bind(m_socket , (SOCKADDR*)&m_addrSrv , sizeof(SOCKADDR));
}
else
{
bind(m_socket , (SOCKADDR*)&m_addrClient , sizeof(SOCKADDR));
}
return true;
}
void CMySocket::SendtoEX(const char * chSendBuf)
{
sendto(m_socket , chSendBuf , strlen(chSendBuf) , 0 , (SOCKADDR *)&m_addrSrv , sizeof(SOCKADDR));
}
void CMySocket::SendtoEX(SOCKADDR_IN addr, const char * chSendBuf)
{
sendto(m_socket , chSendBuf , strlen(chSendBuf) , 0 , (SOCKADDR *)&addr , sizeof(SOCKADDR));
}
void CMySocket::InitFdSocket()
{
FD_ZERO(&m_fdSocket); //清空套接字集合
FD_SET(m_socket, &m_fdSocket); //向集中添加套接字
}
bool CMySocket::RecvfromEX(char* recvBuf , int recvSize , SOCKADDR_IN* pAddr)
{
struct timeval tv; //等待时间
tv.tv_sec = 0; //秒
tv.tv_usec = 0; //毫秒
fd_set fdRead = m_fdSocket;
int nRet = select(0, &fdRead, NULL, NULL, &tv); //筛选出接到数据的socket
if (nRet > 0)
{
ZeroMemory(recvBuf , sizeof(recvBuf));
int len=sizeof(SOCKADDR);
int iRecv =recvfrom(m_fdSocket.fd_array[0], recvBuf, recvSize, 0 , (SOCKADDR*)pAddr , &len);
if(iRecv > 0) //可读
{
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -