通过不同的端口将数据返回给客户端

时间:2014-05-15 14:47:01

标签: java sockets wget

我正在使用wget通过代理请求页面并使用storm来执行某些处理(所有这些都与此上下文无关,但希望如此),问题的关键是这个。

  1. ClientInetAddress : ClientPort的客户向ServerInetAddress : ServerPort1的服务器发送请求。

  2. 但是在Server程序中创建的套接字必须关闭,无法再次打开。

  3. 但需要将包含某些数据的回复发送回客户端。

  4. 这是通过带有ServerInetAddress : ServerPort2的套接字完成的,并通过ClientInetAddress : ClientPort发送回客户端套接字。

  5. 如图所示,单独的端口用于将数据发送回客户端。该请求是使用wget发送的,所以我猜测有一个监听器在那里等待响应。

    我的问题是,监听器是否检查返回的数据是否来自发送给它的同一服务器端口(ServerPort1)?因为我尝试了一个场景并且我得到Connection Refused例外,即使我发送到同一个端口(应该有一个监听器)。

    用于返回数据的方法是

    Socket clientSocket=new Socket('<ClientInetAddress>','<ClientPort>');
    

    这会产生我猜错误。这里有什么问题吗?

1 个答案:

答案 0 :(得分:1)

为什么(2)?套接字为什么关闭?这是一个 bug 。你的设计有缺陷。

错误的原因是客户端没有监听套接字。客户不会。服务器。

所以你要做的事情是不可能的。

修复您的设计。