我有两个需要使用HTTP相互通信的应用程序。每个人当前都是使用HttpServer类的服务器,并使用Apaches HTTP client library发出请求。
其中一个应用程序在运行之前将了解其他端口地址,例如:端口8000意味着它使用它来发出可以由其他应用程序处理的HTTP get请求。但是,如果第二个应用程序想要向第一个应用程序发送请求,它将不知道将响应发送到哪个端口。发生这种情况是因为第一个应用程序将使用将动态选择端口的HTTP客户端库发送请求,例如,端口6543,意味着第二个应用程序无法保存并稍后使用它。
示例:
App 1使用端口8000加载到localhost上。
App 2在端口8050的localhost上加载。
App 1知道app 2在8050上并发送由app 2处理的请求。
应用2希望向应用1发送请求,但它不知道其端口,因为先前的请求是使用动态分配的端口发送的。
除了第一个将其服务器端口号发送给应用程序的应用程序之外,还有这种情况吗?
答案 0 :(得分:1)
我不确定你到底想要做什么。如果客户端发送HTTP请求,它实际上可以从同一连接读取响应,为什么要通过不同的连接发送它并产生开销。如果你想实现它,那么除了客户端服务器交换端口信息以用于它们的请求响应并且它们两者都充当客户端+服务器之外没有办法。可以使用请求中的HTTP标头交换此信息。
我相信你在这里与TCP和HTTP端口混淆。
然而,第二个应用程序将获取请求,处理它 不知道哪个端口要发送响应,因为HTTP客户端 库将动态选择一个端口,例如港口6543
您的服务器不仅仅是选择动态端口来发送响应,而是用于发送响应的底层TCP任意端口。 TCP通常是与HTTP协议一起使用的底层传输协议。 TCP客户端发送一个名为'客户端端口'告诉服务器他们想要接收响应的位置。这些端口号是由客户端从一系列空闲端口中随机选取的。
答案 1 :(得分:0)