我正在实现一个客户端服务器应用程序。我是新来的 。我尝试按照文章A Simple Java TCP Server and TCP Client

实际上我已经有一个可以工作的客户端(不是我的代码)

所以我只需要为此编写服务器。

另外,我的服务器将仅由一个客户端连接,因此我真的看不到需要支持多个客户端。

如我所见,使用netstat -a创建了一个侦听服务器,但是客户端无法连接到它。没有给出任何令人惊讶的错误消息。好像对连接的调用被忽略了。在客户端上看不到任何异常。

我的服务器代码(可能是错误的)

private static void create_request_server(int requestport) {
    // TODO Auto-generated method stub

    try {
        ServerSocket s1 = new ServerSocket(requestport);
        requestsocket = s1.accept();
          // Do some stuff . But this accept never breaks.
    } catch (Exception e) {
        e.printStackTrace();
    }
}


正确的客户

try {
            fRequestSocket = new Socket("localhost", requestPort);
            fRequestWriter = new PrintWriter(fRequestSocket.getOutputStream());
            fRequestReader = new BufferedReader(new InputStreamReader(fRequestSocket.getInputStream()));


        } catch (UnknownHostException e) {
            abort(" UnknownHostException", e);
        } catch (IOException e) {
            abort(" IOException", e);
        }


费耶

我的客户端和服务器都在本地主机上

我的服务器严重错误吗?

编辑(接近答案)

因此,借助下面发布的宝贵意见,我弄清了问题所在。
问题出在localhost和127.0.0.1之间

所以我做了一个netstat -a,发现服务器创建如下:

TCP [::]:56283 Sin-Host LISTENING


代替

TCP 127.0.0.1:56283 Sin-Host LISTENING


因此客户端无法连接。关于如何使服务器绑定的任何想法o 127.0.0.1

可以对ServerSocket s1 = new ServerSocket(requestport)进行任何更改吗?

最佳答案

有时localhost和127.0.0.1有问题
在您的客户端中尝试ip也许可行。

只是要比使用此构造函数在注释中更容易看到它,您可以配置服务器:

new ServerSocket(1234,10,InetAddress.getByName("127.0.0.1"));

10-07 19:31
查看更多