J'ai deux interface réseau installé sur l'interface du système client a l'IP 192.168.3.1 et l'interface 2 a l'IP 192.168.5.1, je veux me connecter au système distant qui a ip 192.168. 5.7 mais la connexion ne s'établit pas. Quand je désactiverai l'interface réseau 192.168.3.1 cela fonctionnera bien. je suis en utilisant le code suivantdeux interface réseau côté client ne se connecte pas socket
#include "windows.h"
#include "stdio.h"
#include "conio.h"
#include "winsock2.h"
bool Connect(const char *addr_name, int port)
{
int ErrorCode=0;
SOCKET Socket;
::WSAData wsa_data;
ErrorCode = ::WSAStartup(MAKEWORD(1, 1), &wsa_data);
if(ErrorCode != 0)
return ErrorCode;
// Get binary address to connect to
u_long addr = inet_addr(addr_name);
if (addr == INADDR_NONE)
ErrorCode=1;
else
{
// Allocate socket
Socket = ::socket(AF_INET, SOCK_STREAM, 0);
if (Socket == INVALID_SOCKET)
ErrorCode = ::WSAGetLastError();
else
{
// Set up sockaddr_in for connect
sockaddr_in sin;
memset(&sin, 0, sizeof(sin));
sin.sin_family = AF_INET;
sin.sin_port = ::htons((u_short)port);
sin.sin_addr.s_addr = addr;
// Connect the socket to the address
if (::connect(Socket, (sockaddr*) &sin, sizeof(sin)) == SOCKET_ERROR)
{
ErrorCode = ::WSAGetLastError();
::closesocket(Socket);
Socket = INVALID_SOCKET;
}
}
}
return ErrorCode == 0;
}
void main(int argc,char** argv)
{
Connect("192.168.5.7",1258);
}
Pouvez-vous publier le masque de sous-réseau pour chaque interface concernée? –
Frank a probablement raison: '192.168/16' dans la table de routage correspondrait aux deux adresses IP mais à une seule interface. –