客户端的两个网络接口没有连接套接字
问题描述:
我有两个网络接口安装在客户端系统接口一个IP为192.168.3.1,接口2为IP 192.168.5.1,我想连接到具有IP 192.168的远程系统。 5.7但连接不成立。当我禁用网络接口192.168.3.1它会正常工作。我使用下面的代码客户端的两个网络接口没有连接套接字
#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);
}
答
交通网络路由在第一界面,你应该回答这个问题,首先在(192.168.3.1)接口为何网络流量路由。
当您禁用第一个接口流量路由到第三个接口时,您必须在两个接口中检查子网掩码。
你可以发布涉及的每个接口的子网掩码吗? – 2010-07-29 11:11:48
Frank可能是正确的 - 路由表中的“192.168/16”可以匹配两个IP,但只能匹配一个接口。 – 2010-07-29 15:26:43