два сетевых интерфейса на стороне клиента не соединяют сокет - PullRequest
0 голосов
/ 29 июля 2010

У меня есть два сетевых интерфейса, установленных на интерфейсе системы клиента, один имеет 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);
}

1 Ответ

0 голосов
/ 05 декабря 2013

Маршрут сетевого трафика в первом интерфейсе, вы должны ответить на этот вопрос, почему маршрут сетевого трафика в первом (192.168.3.1) интерфейсе.

При отключении маршрутизации трафика первого интерфейса на третий интерфейс. Необходимо проверитьмаска подсети в обоих интерфейсах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...