【发布时间】:2013-06-28 09:55:50
【问题描述】:
我正在实现一个客户端-服务器应用程序。我是新来的 。我尝试关注文章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);
}
仅供参考
我的客户端和服务器都在本地主机上
我的服务器严重不正确吗?
编辑(即将回答)
在下面发布的有价值的 cmets 的帮助下,我弄清楚了问题所在。 问题出在 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) 进行任何更改吗?
【问题讨论】:
-
@Th0rndike 客户端正在通过
new Socket("localhost", requestPort);调用请求一个。 Javadoc:创建一个流套接字并将其连接到指定 IP 地址的指定端口号。 -
@BackSlash 是的,你是对的 .. 就是这样
-
@BackSlash 是的。评论已删除:)
标签: java client-server