,我可以知道我将使用哪个端口号吗?
问题描述:
我正在使用socking编程API编写客户端/服务器应用程序。,我可以知道我将使用哪个端口号吗?
在客户端,在调用connect()之前,我能知道我将使用哪个端口号吗? 我现在拥有的是调用socket()的套接字文件描述符。我试图使用getsockname,但我只有0端口号。
答
即使端口号为0
,您也可以明确调用bind()
。之后,getsockname()
应该给你的端口。
答
在调用bind(2)
(端口= 0和/或addr = 0)之前,没有分配地址/端口。绑定后,您可以使用getsockname。
+0
当然,'connect'暗示'bind',如果它之前没有明确调用的话。 – 2012-01-04 00:26:33
答
我强烈建议您阅读Beej's Guide to Network Programming,如果您完全不熟悉套接字编程。
但回答你的问题(我认为)与TCP套接字,你需要知道你连接到什么远程端口(即服务器也bind()
)。但是,您通常(客户端应用程序员)不指定服务器用于回话的端口。它由TCP堆栈根据客户端可用的端口号随机选择。
你是指你连接的是哪个插座,或者你将要写出哪个插座? – dbeer 2012-01-03 22:22:13