简单Java客户端 - 服务器:客户端无法连接到服务器

时间:2013-06-28 09:55:50

标签: java client-server

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

进行操作

实际上我已经有一个有效的客户端(不是我的代码)

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

此外,我的服务器将只由一个客户端连接,所以我真的不需要支持多个客户端。

正如我所看到的那样,使用netstat -a创建了一个监听服务器,但是客户端无法连接到它。没有给出任何错误信息令人惊讶。就好像忽略了对connect的调用一样。客户端没有例外。

我的服务器代码(可能有问题)

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);
        }

FYI

我的客户端和服务器都在localhost上

我的服务器是不是很糟糕?

编辑(接近回答)

在下面发布的有价值的评论的帮助下,我想出了问题所在。 问题出在localhost& 127.0.0.1

所以我做了netstat -a,看到服务器创建如下:

TCP [::]:56283 Sin-Host LISTENING

而不是

TCP 127.0.0.1:56283 Sin-Host LISTENING 

因此客户端无法连接。有关如何使服务器绑定到127.0.0.1

的任何想法

可以对ServerSocket s1 = new ServerSocket(requestport)进行哪些更改?

3 个答案:

答案 0 :(得分:1)

有时localhost和127.0.0.1有问题 在您的客户端尝试使用ip可能会有效。

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

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

答案 1 :(得分:0)

您是否尝试过检查防火墙?

可能是您的防火墙阻止了请求。 您建立连接的方式与我的方式非常相似。但它在这里工作正常。

答案 2 :(得分:0)

一旦有了套接字,你仍然需要创建一个输入和输出流来发送和接收来自服务器的数据(lol语法)

OutputStream writer = requestsocket.getOutputStream();

BufferedReader reader = new BufferedReader(new InputStreamReader(requestsocket.getInputStream());

现在,只要您想从服务器向客户端发送数据,就可以执行以下操作:

writer.println("Data sending to client that's listening to my server");