0

自宅に 2 台のデバイスがあります。1 台のデバイスの IP アドレスは 10.0.0.2 です。これはサーバーであり、もう 1 台のデバイスは IP アドレスが 10.0.0.6 です。

したがって、クライアントコードには、このコードの貫通があります

  sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

    /* Construct the server address structure */
    ServPort=3200;

    servIP="10.0.0.2";

    memset(&ServAddr, 0, sizeof(ServAddr));     /* Zero out structure */
    ServAddr.sin_family      = AF_INET;             /* Internet address family */
    ServAddr.sin_addr.s_addr = inet_addr(servIP);   /* Server IP address */
    ServAddr.sin_port        = htons(ServPort); /* Server port */

    /* Establish the connection to the server */
     i= connect(sock, (struct sockaddr *) &ServAddr, sizeof(ServAddr));

クライアント 10.0.0.6 から 10.0.0.2 のサーバーに完全に接続できました。コードは正常に実行されました。

次にライブラリに移動すると、サーバーの IP アドレスは 192.168.1.168 になり、クライアント デバイスの IP アドレスは 192.168.1.147 になりました。

そのため、クライアントに合わせて修正したコード

   sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

    /* Construct the server address structure */
    ServPort=3200;

    servIP="192.168.1.168";

    memset(&ServAddr, 0, sizeof(ServAddr));     /* Zero out structure */
    ServAddr.sin_family      = AF_INET;             /* Internet address family */
    ServAddr.sin_addr.s_addr = inet_addr(servIP);   /* Server IP address */
    ServAddr.sin_port        = htons(ServPort); /* Server port */

    /* Establish the connection to the server */
     i= connect(sock, (struct sockaddr *) &ServAddr, sizeof(ServAddr));

現在、サーバーに接続できません。

サーバーデバイスとクライアントデバイスのIPアドレスを除いて、すべてのコードは同じです。自宅ではコードを正常に実行できますが、ライブラリでは実行できません。これは単なる TCP であるため、ファイアウォールに関係する必要があります。

4

0 に答える 0