2

eth0 と eth1 を介してデータを転送する必要があります。そのため、スレッドを使用して2つのソケットを開くクライアント側でコードを作成しましたが、正しく機能しないということは、eth1に接続していないことを意味します(接続エラー)。データは etho のみを介して送信されています。
注: ここでは、2 つの別個のネットワークを使用しています。これは私のコードです。これを読んでください...

void Socket_1()
{

    struct sockaddr_in ser_sock1 ;
    u_int yes=1 ;
    int setsock_fd ;
    ser_sock1.sin_family = AF_INET ;
    ser_sock1.sin_port = htons( 1602 ) ;
    ser_sock1.sin_addr.s_addr =inet_addr("192.168.1.35")            
    cl_fd1 = socket(AF_INET,SOCK_STREAM,0) ;
    if (cl_fd1 == -1) 
    {
        printf("Socket1 : ERROR\n") ;
        return ;
    }
    /* Bind to socket*/
    if( bind(cl_fd1,(struct sockaddr *)&ser_sock1 , sizeof(ser_sock1)) < 0)
    {
        printf("bind1 : ERROR\n") ;
        return ;
    }

    /* Construct the server sockaddr_in structure */
    memset(&ser_sock1, 0, sizeof(ser_sock1));       /* Clear struct */
    ser_sock1.sin_family = AF_INET ;
    ser_sock1.sin_port = htons( 22008 ) ;
    ser_sock1.sin_addr.s_addr = inet_addr("192.168.1.151") ;
    /*connect to destination*/
    con_fd1 = connect(cl_fd1, (struct sockaddr *)(&ser_sock1), sizeof(ser_sock1));
    if(con_fd1 < 0)
    {
        printf("connect1 : ERROR\n") ;
        while(1)
        {
        }
        return ;
    } 
    g_socketCreated = 1 ;
    while(g_socketCreated)
    {
        sprintf( buff, "Mess-%08X", count++ );
        send( cl_fd1, buff, strlen(buff), 0x0 ) ;
        sleep(1) ;
    }
}

void Socket_2(void)
{

    struct sockaddr_in ser_sock2, ser_sock3 ;   
    ser_sock2.sin_family = AF_INET ;
    ser_sock2.sin_port = 0 ;
    ser_sock2.sin_addr.s_addr = inet_addr("192.168.42.130") ;
    cl_fd2 = socket(AF_INET,SOCK_STREAM,0) ;
    if (cl_fd2 == -1) 
    {
        printf("Socket2 : ERROR\n") ;
        return ;
    }
    /* Bind to socket*/
    if( bind(cl_fd2,(struct sockaddr *)&ser_sock2 , sizeof(ser_sock2)) < 0)
    {
        printf("bind2 : ERROR\n") ;
        return ;
    }

    /* Construct the server sockaddr_in structure */
    memset(&ser_sock3, 0, sizeof(ser_sock3));       /* Clear struct */
    ser_sock3.sin_family = AF_INET ;
    ser_sock3.sin_port = htons( 22000 ) ;
    ser_sock3.sin_addr.s_addr = inet_addr("110.234.115.27") ;


    /*connect to destination*/
    con_fd2 = connect(cl_fd2, (struct sockaddr *)(&ser_sock3), sizeof(ser_sock3));
    if(con_fd2 < 0)
    {
        printf("connect2 : ERROR\n") ;
        return ;
    } 
    g_socketCreated1 = 1 ;
    while(1)
    {
        sprintf( buff1, "soc2---Mess-%08X", count1++ );
        send( cl_fd2, buff1, strlen(buff1), 0x0 ) ;
        sleep(1) ;
    }       
}  
4

0 に答える 0