0

我正在实现一个客户端-服务器应用程序。我是新来的 。我尝试按照文章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 

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

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

4

3 回答 3

1

有时 localhost 和 127.0.0.1 会出现问题
尝试在您的客户端中使用 ip,也许这可行。

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

new ServerSocket(1234,10,InetAddress.getByName("127.0.0.1"));
于 2013-06-28T10:05:15.647 回答
0

你试过检查你的防火墙吗?

可能您的防火墙阻止了请求。你建立连接的方式看起来很像我做的方式。但它在这里工作正常。

于 2013-06-28T10:04:20.220 回答
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");
于 2013-06-28T10:05:06.780 回答