私はSockingプログラミングAPIを使用してクライアント/サーバーアプリケーションを作成しています。を使用すると、使用するポート番号を知ることはできますか?
connect()を呼び出す前に、クライアント側で使用するポート番号を知ることはできますか? 私が今持っているのは、ソケットファイル記述子がsocket()を呼び出すことです。私はgetsocknameを使用しようとしましたが、ポート番号には0しかありませんでした。
私はSockingプログラミングAPIを使用してクライアント/サーバーアプリケーションを作成しています。を使用すると、使用するポート番号を知ることはできますか?
connect()を呼び出す前に、クライアント側で使用するポート番号を知ることはできますか? 私が今持っているのは、ソケットファイル記述子がsocket()を呼び出すことです。私はgetsocknameを使用しようとしましたが、ポート番号には0しかありませんでした。
ポート番号0
でも、bind()
を明示的に呼び出すことができます。その後、getsockname()
はあなたにポートを与えるはずです。
bind(2)
(ポート= 0および/またはaddr = 0)を呼び出すまで、アドレス/ポートは割り当てられません。バインド後、getsocknameを使用できます。
もちろん、前に明示的に呼び出されていなければ 'connect'は' bind'を意味します。 –
ソケットプログラミングを初めてお使いの場合は、Beej's Guide to Network Programmingを読むことを強くお勧めします。
しかし、TCPソケットで質問に答えるには、どのリモートポートに接続しているかを知る必要があります(つまり、サーバーがbind()
を実行しています)。しかし、通常は(クライアント・アプリケーション・プログラマー)は、サーバーがトークバックに使用するポートを指定しません。これは、クライアントが使用可能なポート番号に基づいてTCPスタックによってランダムに選択されます。
どのソケットに接続しているのか、どのソケットを書き出すのかを意味していますか? – dbeer