C
hustbaer schrieb:
Du musst deinen socket mit "bind" an eine IP + Port binden befor du den an listen übergeben kannst. Daher muss man bei bind eine IP mit angeben.
Achja klar, das habe ich mit INADDR_ANY gelößt, id est:
void CWinTcpSocket::Bind(USHORT usLocalPort)
{
if(m_hSocket == INVALID_SOCKET)
throw CBadSocket(TEXT("Error in method 'Bind': The socket must have been created previously."), 0);
SOCKADDR_IN siAddr;
siAddr.sin_addr.s_addr = INADDR_ANY;
siAddr.sin_family = AF_INET;
siAddr.sin_port = htons(usLocalPort);
memset(siAddr.sin_zero, 0, sizeof(siAddr.sin_zero));
if(bind(m_hSocket, reinterpret_cast<const SOCKADDR*>(&siAddr), sizeof(SOCKADDR_IN)) == SOCKET_ERROR)
throw CBindingFailed(TEXT("Error in method 'Bind': Port-Binding failed. Check the WSA-Error-Code for more information!"),
usLocalPort, WSAGetLastError());
}
Oder ist das nicht empfehlenswert?
Hm, perfekt! Habe jetzt die Einstellungen unter Virtual Server gemacht und es funktioniert, also falls ich den Server starte (und der Client 'auf mich' connected). Andersherum nicht, aber das wird dann an der entsprechenden Einstellung im anderen Router liegen.
Was eine Arbeit nur für 'ne kleine Server-Client-Verbindung .
In jedem Fall: vielen Dank an alle ! - Problem gelößt!