| 18 |
|
|
| 19 |
void CClientSocket::OnConnect(SOCKET hSocket, int nErrorCode) |
void CClientSocket::OnConnect(SOCKET hSocket, int nErrorCode) |
| 20 |
{ |
{ |
| 21 |
SOCKADDR SockAddr; |
SOCKADDR sAddr; |
| 22 |
NETADDR NetAddr; |
NETADDR NetAddr; |
| 23 |
|
|
| 24 |
if (nErrorCode != 0) |
if (nErrorCode != 0) |
| 27 |
return; |
return; |
| 28 |
} |
} |
| 29 |
|
|
| 30 |
if (!doGetPeerName(hSocket, &SockAddr) || !AsyncSelect(FD_CLIENT)) |
if (!doGetPeerName(hSocket, &sAddr) || !AsyncSelect(FD_CLIENT)) |
| 31 |
{ |
{ |
| 32 |
return; |
return; |
| 33 |
} |
} |
| 34 |
|
|
| 35 |
CopyMemory(&m_PeerAddr, &SockAddr, sizeof(m_PeerAddr)); |
CopyMemory(&m_PeerAddr, &sAddr, sizeof(m_PeerAddr)); |
| 36 |
|
|
| 37 |
ConvertSockAddrToNetAddr(&SockAddr, NetAddr); |
ConvertSockAddrToNetAddr(&sAddr, NetAddr); |
| 38 |
m_SockMsg.pTgtObj->OnSocketConnectMessage(m_SockMsg.dwSocketID, NetAddr); |
m_SockMsg.pCallback->OnSocketConnectMessage(m_SockMsg.dwSocketID, NetAddr); |
| 39 |
} |
} |
| 40 |
|
|
| 41 |
void CClientSocket::OnReceive(SOCKET hSocket, int nErrorCode) |
void CClientSocket::OnReceive(SOCKET hSocket, int nErrorCode) |
| 42 |
{ |
{ |
| 43 |
CByteArray data; |
CByteArray data; |
| 44 |
SOCKADDR SockAddr; |
SOCKADDR sAddr; |
| 45 |
NETADDR NetAddr; |
NETADDR NetAddr; |
| 46 |
|
|
| 47 |
if (nErrorCode != 0) |
if (nErrorCode != 0) |
| 50 |
return; |
return; |
| 51 |
} |
} |
| 52 |
|
|
| 53 |
if (!doGetPeerName(hSocket, &SockAddr) || !doReceive(hSocket, data)) |
if (!doGetPeerName(hSocket, &sAddr) || !doReceive(hSocket, data)) |
| 54 |
{ |
{ |
| 55 |
return; |
return; |
| 56 |
} |
} |
| 57 |
|
|
| 58 |
ConvertSockAddrToNetAddr(&SockAddr, NetAddr); |
ConvertSockAddrToNetAddr(&sAddr, NetAddr); |
| 59 |
m_SockMsg.pTgtObj->OnSocketReceiveMessage(m_SockMsg.dwSocketID, NetAddr, data); |
m_SockMsg.pCallback->OnSocketReceiveMessage(m_SockMsg.dwSocketID, NetAddr, data); |
| 60 |
} |
} |
| 61 |
|
|
| 62 |
void CClientSocket::OnSend(SOCKET hSocket, int nErrorCode) |
void CClientSocket::OnSend(SOCKET hSocket, int nErrorCode) |
| 67 |
return; |
return; |
| 68 |
} |
} |
| 69 |
|
|
| 70 |
m_SockMsg.pTgtObj->OnSocketSendMessage(m_SockMsg.dwSocketID); |
m_SockMsg.pCallback->OnSocketSendMessage(m_SockMsg.dwSocketID); |
| 71 |
} |
} |
| 72 |
|
|
| 73 |
void CClientSocket::OnClose(SOCKET hSocket, int nErrorCode) |
void CClientSocket::OnClose(SOCKET hSocket, int nErrorCode) |
| 82 |
} |
} |
| 83 |
|
|
| 84 |
ConvertSockAddrToNetAddr(&m_PeerAddr, NetAddr); |
ConvertSockAddrToNetAddr(&m_PeerAddr, NetAddr); |
| 85 |
m_SockMsg.pTgtObj->OnSocketCloseMessage(m_SockMsg.dwSocketID, NetAddr); |
m_SockMsg.pCallback->OnSocketCloseMessage(m_SockMsg.dwSocketID, NetAddr); |
| 86 |
} |
} |
| 87 |
|
|
| 88 |
BOOL CClientSocket::CreateSocket(SOCKMSG SockMsg) |
BOOL CClientSocket::CreateSocket(SOCKMSG SockMsg) |
| 89 |
{ |
{ |
| 90 |
if (!IBaseSocket::CreateSocketWindow()) |
return doCreateSocket(SockMsg, SOCK_STREAM, IPPROTO_TCP); |
|
{ |
|
|
return FALSE; |
|
|
} |
|
|
|
|
|
SetTargetWnd(SockMsg); |
|
|
|
|
|
m_hSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); |
|
|
|
|
|
if (m_hSocket == INVALID_SOCKET) |
|
|
{ |
|
|
TRACE1("***** ERROR: socket(%d) *****\n", GetLastError()); |
|
|
m_dwError = GetLastError(); |
|
|
return FALSE; |
|
|
} |
|
|
|
|
|
SetSendTimeout(m_dwSendTimeout); |
|
|
SetRecieveTimeout(m_dwReceiveTimeout); |
|
|
|
|
|
return TRUE; |
|
| 91 |
} |
} |
| 92 |
|
|
| 93 |
BOOL CClientSocket::Initialize(SOCKMSG SockMsg) |
BOOL CClientSocket::Initialize(SOCKMSG SockMsg) |
| 212 |
|
|
| 213 |
BOOL CClientSocket::SyncConnect(const LPCSTR lpDstAddr, WORD wPort, int nLength, DWORD dwTimeout) |
BOOL CClientSocket::SyncConnect(const LPCSTR lpDstAddr, WORD wPort, int nLength, DWORD dwTimeout) |
| 214 |
{ |
{ |
| 215 |
SOCKADDR_IN siAddr; |
SOCKADDR_IN sAddrIn; |
| 216 |
MakeSockAddrIN(&siAddr, inet_addr(lpDstAddr), wPort); |
MakeSockAddrIN(&sAddrIn, inet_addr(lpDstAddr), wPort); |
| 217 |
return SyncConnect((LPSOCKADDR)&siAddr, sizeof(siAddr), dwTimeout); |
return SyncConnect((LPSOCKADDR)&sAddrIn, sizeof(sAddrIn), dwTimeout); |
| 218 |
} |
} |
| 219 |
|
|
| 220 |
BOOL CClientSocket::AsyncConnect(const LPSOCKADDR lpDstAddr, int nLength) |
BOOL CClientSocket::AsyncConnect(const LPSOCKADDR lpDstAddr, int nLength) |
| 240 |
|
|
| 241 |
BOOL CClientSocket::AsyncConnect(const LPCSTR lpDstAddr, WORD wPort, int nLength) |
BOOL CClientSocket::AsyncConnect(const LPCSTR lpDstAddr, WORD wPort, int nLength) |
| 242 |
{ |
{ |
| 243 |
SOCKADDR_IN siAddr; |
SOCKADDR_IN sAddrIn; |
| 244 |
MakeSockAddrIN(&siAddr, inet_addr(lpDstAddr), wPort); |
MakeSockAddrIN(&sAddrIn, inet_addr(lpDstAddr), wPort); |
| 245 |
return AsyncConnect((LPSOCKADDR)&siAddr, sizeof(siAddr)); |
return AsyncConnect((LPSOCKADDR)&sAddrIn, sizeof(sAddrIn)); |
| 246 |
} |
} |
| 247 |
|
|
| 248 |
////////////////////////////////////////////////////////////////////////// |
////////////////////////////////////////////////////////////////////////// |