我目前正在学习使用Java通过套接字进行客户端服务器通信。 首先,我使用以下代码检索自己机器的IP地址。
InetAddress ownIP=InetAddress.getLocalHost();
//the result being 192.168.56.1
现在我使用上面提到的地址编写简单的客户端服务器应用程序
public class SimpleClientServer {
public static void main(String[] args)
{
//sending "Hello World" to the server
Socket clientSocket = null;
PrintWriter out = null;
BufferedReader in = null;
try
{
clientSocket = new Socket("192.168.56.1", 16000);
out = new PrintWriter(clientSocket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(
clientSocket.getInputStream()));
out.println("Hello World");
out.close();
in.close();
clientSocket.close();
}
catch(IOException e)
{
System.err.println("Error occured " + e);
}
}
}
结果hower读取了一个。
Error occured java.net.ConnectException: Connection refused: connect
这是什么原因。它只是错误的主机地址吗?
答案 0 :(得分:4)
从您给出的代码中,您似乎建议当前没有任何内容正在侦听端口16000以便连接到套接字。
如果是这种情况,您需要实现类似
的内容ServerSocket serverSocket = null;
try {
serverSocket = new ServerSocket(16000);
}
catch (IOException e) {
System.err.println("Could not listen on port: 16000.");
System.exit(1);
}
可在the Java online documentation中找到更多信息,其中包含a full example。
答案 1 :(得分:2)
使用套接字,无论您使用何种语言,都可以使用socket_connect启动连接,也可以使用socket_listen和socket_accept进行侦听和接受。您的socket_connect调用正在尝试连接到一个似乎没有收听任何内容的IP地址。