让我们假设我在计算机A中,我有一些服务器在不同的端口上运行,但所有服务器基本上都是同一程序的实例(只是绑定到不同的端口)。现在,计算机B,客户端,他是否需要知道他希望在计算机A上连接的软件是什么端口?
关键是,我正在实现类似于套接字的某种通信。一切都应该工作正常,但我不知道如何创建从计算机到另一个计算机的初始消息 - 我只是不知道将它发送到哪个端口。客户端是否知道他在服务器上发送的端口?
在这里说(客户端):clientsocket.connect(('localhost', 8089))
,客户端是否连接在端口8089上运行的服务器?如果是这样,他的套接字是什么端口(他为客户端使用了什么端口?
答案 0 :(得分:0)
是。计算机A上的网络堆栈知道传递传入数据包的过程的唯一方法是计算机B在数据包中设置正确的端口。默认情况下,Web服务器在端口80上运行,但运行多个不同Web服务器的计算机将在不同的端口上运行它们,并且客户端必须具体说明要连接到哪个服务器。 http://example.com
,http://example.com:8080
和http://example.com:12345
分别指端口80,8080和12345上example.com
上运行的服务器。
要了解客户端中使用的端口,您需要阅读要连接的服务器的文档。
另一方面,客户端用于接收响应的端口通常由网络堆栈自动设置。客户端不需要做任何特殊设置,服务器只需将数据包发送回传入数据包源部分的地址/端口。