1

Linux で動作する ARM ベースのロボット用の tcp 接続 C++ ラッパーを実装しています。
これが私のコードです:

bool tcp_connection::wait_connection(int port)
{
  is_server = true;

  if (!create_socket())
    return false;

  local_addr.sin_port = htons(port);
  const int result = bind(sockfd, (struct sockaddr *) &local_addr, sizeof(local_addr));
  if (result < 0)
  {
    std::cout << "tcp_connection.cpp: Error on binding '" << strerror(errno) << "'" << std::endl;
    std::cout << "return false" << std::endl;
    return false;
    std::cout << "after return false???" << std::endl;
  }

  std::cout << "listening...." << std::endl;
  .....
  return true;
}

ここに私の出力があります:

tcp_connection.cpp: Error on binding 'Address already in use'
return false
listening....

それはどのように起こりますか?

4

1 に答える 1

2

戻ってきています。そうでない場合、出力は次のようになります。

tcp_connection.cpp: Error on binding 'Address already in use'
return false
after return false???
listening....

印刷は、分岐が行われていない場所listening...への後続の呼び出しからのものである可能性があります。wait_connection()if (result < 0)

于 2013-10-26T09:16:11.600 に答える