web-dev-qa-db-ja.com

なぜポートは整数ではなく文字列ですか?

Port メソッドは、整数ではなく文字列を返します。その理由は何ですか?また、ポートの前に「:」を付けても安全ですか?

103
R3turnz

これは、コロンの後に表示されるものがポート番号またはサービス名のいずれかである可能性があるためです。

以下は、ポート番号の代わりにサービス名が使用される有効な例です。

listener, err := net.Listen("tcp", "localhost:https") // port 443
// ...

特定のサービスのポートマッピングは、 net.LookupPort を使用して検索できます。 Unixシステムでは、/etc/servicesファイルがマッピングのソースとなります。

143
Tim Cooper

数値のデフォルト値は0です。関数の場合

 func (u * URL) Port () string

ポートを刺す代わりに戻り番号は0になります

ポート0はTCP/IPネットワーキングの予約ポートです。つまり、TCPまたはUDPメッセージで使用しないでください。ただし、ポート0は、ネットワークプログラミング、特にUnixソケットプログラミングで特に重要です。システムに割り当てられた動的ポートを要求するためです。

いくつかの機能でプログラミングする必要がある

1
Fadid