我正在使用socking編程API編寫客戶端/服務器應用程序。,我可以知道我將使用哪個端口號嗎?
在客戶端,在調用connect()之前,我能知道我將使用哪個端口號嗎? 我現在擁有的是調用socket()的套接字文件描述符。我試圖使用getsockname,但我只有0端口號。
我正在使用socking編程API編寫客戶端/服務器應用程序。,我可以知道我將使用哪個端口號嗎?
在客戶端,在調用connect()之前,我能知道我將使用哪個端口號嗎? 我現在擁有的是調用socket()的套接字文件描述符。我試圖使用getsockname,但我只有0端口號。
即使端口號爲0
,您也可以明確調用bind()
。之後,getsockname()
應該給你的端口。
在調用bind(2)
(端口= 0和/或addr = 0)之前,沒有分配地址/端口。綁定後,您可以使用getsockname。
當然,'connect'暗示'bind',如果它之前沒有明確調用的話。 – 2012-01-04 00:26:33
我強烈建議您閱讀Beej's Guide to Network Programming,如果您完全不熟悉套接字編程。
但回答你的問題(我認爲)與TCP套接字,你需要知道你連接到什麼遠程端口(即服務器也bind()
)。但是,您通常(客戶端應用程序員)不指定服務器用於回話的端口。它由TCP堆棧根據客戶端可用的端口號隨機選擇。
你是指你連接的是哪個插座,或者你將要寫出哪個插座? – dbeer 2012-01-03 22:22:13