2014-02-16 20 views
0

我使用的是一個socketConnection,它將TCP端口號port作爲強制參數。現在,我如何確保我指定未使用的端口爲port(我的過程是服務器)?R - 如何確保TCP端口在連接之前未被使用?

編輯:

我知道,讓系統分配的端口,你可以指定port = 0,但我有隨後找出他們給我的端口沒有辦法。

此外,socketConnection(..., server = T)正在阻塞,直到客戶端進程連接。但客戶端進程不知道要連接哪個端口,因爲服務器進程被阻止,無法確定分配的端口號。趕上22!

+0

如果您嘗試使用已綁定某個端口的端口,大多數系統將返回錯誤。 – 2014-02-16 21:45:10

回答

2

這取決於您是創建客戶端套接字還是服務器套接字。

  • 如果您要創建一個客戶端套接字,端口參數種目標端口。所以它必須是一個端口,在使用,作爲服務器,否則你會得到一個連接拒絕。

  • 如果您要創建一個服務器套接字,通常您需要一個固定的端口號,如果它已經在使用中,這意味着您的服務器已經在運行。如果您想爲服務器分配一個隨機的系統分配端口號,並且您有其他方法告訴客戶端端口號是什麼,則只需指定零。

+0

謝謝 - 更新了我的問題以反映您的觀點。我的過程是服務器。傳遞'port = 0'似乎是理想的,除了我不知道如何隨後發現我分配了哪個端口。該信息對客戶端進程來說是十分重要的,以知道要連接到哪個端口。 – mchen

+0

socketConnection()返回的對象中應該有一個方法。 – EJP

+0

謝謝,但'socketConnection(...,server = T)'阻塞,直到客戶端進程連接。但客戶端進程不知道要連接哪個端口,因爲服務器進程被阻止,無法確定分配的端口號。趕上22! – mchen

相關問題