メインコンテンツへスキップ

BSD socketでclient側のport番号を固定する

·321 文字
技術解説 C++
目次

BSD socket APIでclient側のport番号を静的に決めたい。ググってもport番号を動的に決める例ばかりヒットして正しい情報になかなかたどり着けなかったのでメモ。

環境 #

  • Ubuntu 20.04 LTS(WSL2)
  • gcc 9.3.0
  • netcat 1.206-1ubuntu1

portのbind #

以下のサイトが参考になる。 Bind privileged port and remote authorization

サーバー側として起動するときと全く同様に、connectする前にbindを唱えればいいらしい。33400ポートを開けるコードは以下のような感じ。

  c_addr.sin_family = AF_INET;
  c_addr.sin_port = htons(33400);
  c_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
  if (bind(sd, (struct sockaddr*)&c_addr, sizeof(c_addr))) {
    perror("client bind");
    return EXIT_FAILURE;
  }

実行結果 #

指定したポートが使用されているかncコマンドで確認してみる。以下はサーバー側(netcat)のログ。

実行結果
実行結果

ちゃんと33400番ポートを使って通信できていた。

コードの全文は以下1



komori-n
著者
komori-n

Related

static_cast, dynamic_cast, reinterpret_castで結果が変わる例
·612 文字
技術解説 C++
利かずの駒並べ|理論編
·3046 文字
技術解説 C++ パズル 将棋
seleniumのGUIデバッグができるDockerコンテナ
·385 文字
技術解説 Python