我正在使用socking编程API编写客户端/服务器应用程序。
在客户端,在调用connect()之前,我可以知道我将使用哪个端口号吗? 我现在拥有的是调用socket()的套接字文件描述符。我试图使用getsockname,但我的端口号只有0。
答案 0 :(得分:2)
在调用bind(2)
(port = 0和/或addr = 0)之前,没有分配地址/端口。绑定后,您可以使用getsockname。
答案 1 :(得分:2)
如果您对套接字编程完全不熟悉,我强烈建议您阅读Beej's Guide to Network Programming。
但是要使用TCP套接字回答您的问题(我认为),您需要知道您要连接的远程端口(即服务器也执行bind()
)。但是,您通常(客户端应用程序编程人员)不指定服务器用于对话的端口。它由TCP堆栈根据客户端可用的端口号随机选择。
答案 2 :(得分:0)
即使端口号为bind()
,您也可以明确呼叫0
。在此之后,getsockname()
应该为您提供端口。