我正在使用wget
通过代理请求页面并使用storm来执行某些处理(所有这些都与此上下文无关,但希望如此),问题的关键是这个。
ClientInetAddress : ClientPort
的客户向ServerInetAddress : ServerPort1
的服务器发送请求。
但是在Server程序中创建的套接字必须关闭,无法再次打开。
但需要将包含某些数据的回复发送回客户端。
这是通过带有ServerInetAddress : ServerPort2
的套接字完成的,并通过ClientInetAddress : ClientPort
发送回客户端套接字。
如图所示,单独的端口用于将数据发送回客户端。该请求是使用wget
发送的,所以我猜测有一个监听器在那里等待响应。
我的问题是,监听器是否检查返回的数据是否来自发送给它的同一服务器端口(ServerPort1)?因为我尝试了一个场景并且我得到Connection Refused
例外,即使我发送到同一个端口(应该有一个监听器)。
用于返回数据的方法是
Socket clientSocket=new Socket('<ClientInetAddress>','<ClientPort>');
这会产生我猜错误。这里有什么问题吗?
答案 0 :(得分:1)
为什么(2)?套接字为什么关闭?这是一个 bug 。你的设计有缺陷。
错误的原因是客户端没有监听套接字。客户不会。服务器。
所以你要做的事情是不可能的。
修复您的设计。