0

3 つの UDP ソケットの設定についてサポートが必要です。ソケットは、61000、61001、および 61002 でなければならないリモート ポート番号の一部と同じです。データを送受信するために select 関数で使用する必要があるため、このソケットを設定する必要があります。

多くの方法を試しましたが、適切に機能するものはありませんでした。これが 1 つのソケットを設定する通常の手順であることはわかっています。

int set_socket() {

  /* get a datagram socket */
  sock = socket(AF_INET, SOCK_DGRAM, 0);
  if (sock == SOCKET_ERROR) {
    printf ("socket() failed, Err: %d \"%s\"\n", errno,strerror(errno));
    exit(1); 
  } 
  OptVal = 1;
  ris = setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (char *)&OptVal, sizeof(OptVal));
    if (ris == SOCKET_ERROR)  {
      printf ("setsockopt() SO_REUSEADDR failed, Err: %d \"%s\"\n", errno,strerror(errno));
      exit(1);
    }
  /* name the socket */
  Local.sin_family      =   AF_INET;
  Local.sin_addr.s_addr =   htonl(INADDR_ANY);
  Local.sin_port        =   htons(local_port_number_UDP);
  ris = bind(sock, (struct sockaddr*) &Local, sizeof(Local));
  if (ris == SOCKET_ERROR)  {
    printf ("bind() failed, Err: %d \\n",errno);
    exit(1);
  }
  /* assign our destination address */
  To.sin_family               = AF_INET;
  To.sin_addr.s_addr          = inet_addr(string_remote_ip_address_UDP);
  To.sin_port                 = htons(remote_port_number_UDP);

}

3 つのソケットすべてに別のリモート ポート番号を設定するにはどうすればよいですか? structソケットごとに異なる (Local と To) を使用する必要がありますか?

ありがとう、そして私の下手な英語でごめんなさい。

4

1 に答える 1

0

ソケットごとに異なる構造体 (Local と To) を使用する必要がありますか?

いいえ、他の 2 つのソケットに同じものLocalを (変更後sin_port)再利用できます。別のソケットで必要になるたびに変更すればbind、同じものを再利用できます。Tosin_port

于 2014-06-18T06:39:14.410 に答える