2011-12-14 44 views
1

目前,我正在研究C中的TCP客戶機/服務器實現。在這一點上,我發現我可以給任何隨機數作爲我的PC的端口號。這是正確的程序嗎?或者是否有我的電腦的任何標準端口號?如何查找任何PC的端口號?

回答

2

我不知道標準,但我說它不是。至少,我不喜歡這樣做。

你可以通過解析netstat等程序的輸出來檢查佔用的端口,並避免使用這些端口。您也可以使用嘗試連接到一個端口的方法,並在失敗時嘗試另一個端口。除非你真的非常不走運,否則你應該在第二次嘗試時獲得有效的端口。

您應該使用49152-65535範圍內的端口。低於49152的端口被保留/註冊。

+0

Ozbekov:你能支持你的最後聲明(關於端口範圍)嗎? – Philip 2011-12-14 09:09:03

+2

@Philip:「cat/etc/services」,http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xml或RFC6335。 – DevSolar 2011-12-14 11:03:02

1

如果你的問題是你是否可以給任何端口號讓你的服務器監聽,那麼你錯誤地認爲,低於1024的TCP/IP端口號是特殊的,因爲普通用戶不允許在其上運行服務器,您可以使用非特權端口(端口> 1024)。只要確保任何其他應用程序尚未使用該端口(1024以上)使用netstat

2

基本上,您可以使用任何端口(給予足夠的訪問權限)。但服務器和客戶端必須同意在端口上,並且它不應該已被其他應用程序使用。

因此,許多端口已經爲特殊應用保留。 80用於HTTP,22用於SSH等。文件/etc/services提供了更詳細的信息。

端口號0-1023被稱爲公知端口,號碼1024-49151被稱爲註冊端口(不是所有的人都有,但你的想法)。