000
28.09.2002, 10:04 Uhr
FloSoft
Medialer Over-Flow (Administrator)
|
Hallo, ich versuche eine Tcp Verbindung übers internet aufzubauen, Server "horcht" auf der richtigen Ip, nur wenn ich versuche zu connecten, bekomme ich immer einen Timeout ...
Was mach ich da falsch?
Client:
C++: |
if(!m_ClientSocket.Create( iPort ,SOCK_STREAM,FD_READ|FD_WRITE|FD_OOB|FD_ACCEPT|FD_CONNECT|FD_CLOSE,GetHostIPAddressString()) ) { AddStatus("> m_ClientSocket.Create(%d,...,%s) failed",iPort,GetHostIPAddressString()); MessageBox("Error, can't create Socket","ERROR",MB_OK); } AddStatus("> m_ClientSocket.Create(%d,...,%s) done",iPort,GetHostIPAddressString()); m_ClientSocket.Bind(iPort,GetHostIPAddressString());
iPort = atoi(m_Game.m_Server[0].strPort); m_ClientSocket.Connect(m_Game.m_Server[0].strIp,iPort); if(GetLastError()!=WSAEWOULDBLOCK) { AddStatus("> m_ClientSocket.Connect(%s,%d) failed",m_Game.m_Server[0].strIp,iPort); MessageBox("Connection failed","ERROR",MB_OK); ::SetFocus(m_glFenster.m_hWnd); m_ClientSocket.Close(); } else { AddStatus("> m_ClientSocket.Connect(%s,%d) done",m_Game.m_Server[0].strIp,iPort); m_Game.m_strMenu4[4] = "Waiting for reply"; }
|
Er schreibt immer WSAEWOULDBLOCK, und dann krieg ich nach 30s einen timout ...
Server:
C++: |
if(m_ServerSocket.Create(m_iPort,SOCK_STREAM,FD_READ|FD_WRITE|FD_OOB|FD_ACCEPT|FD_CONNECT|FD_CLOSE,m_strAddress)) { AddStatus("> SetServer2Listen: m_ServerSocket.Create(%d,...,%s) done",m_iPort,m_strAddress); } else { AddStatus("> SetServer2Listen: m_ServerSocket.Create(%d,...,%s) failed",m_iPort,m_strAddress); return 0; }
m_ServerSocket.SetParent(m_hParent,m_hStatus,m_hConUser);
if(m_ServerSocket.Listen(m_iMaxUser)) { CString strLocal; UINT iPort; m_ServerSocket.GetSockName(strLocal,iPort); AddStatus("> SetServer2Listen: m_ServerSocket.Listen(%d) on %s:%d done",m_iMaxUser,strLocal,iPort); } else { AddStatus("> SetServer2Listen: m_ServerSocket.Listen(%d) failed",m_iMaxUser); return 0; } return 1;
|
Kann es sein das er nicht connected da ich hinter einem router sitze? Oder muss ich irgendwie den Timeout höher stellen? -- class God : public ChuckNorris { }; |