我正在尝试用java编写服务器和客户端程序。我之前没有这样做过,所以我想我会从下面链接提供的示例开始。
服务器代码:http://java.sun.com/developer/onlineTraining/Programming/BasicJava2/Code/SocketServer.java
客户代码:http://java.sun.com/developer/onlineTraining/Programming/BasicJava2/Code/SocketClient.java
我在命名方面做了一些改动,但基本功能应该是相同的。服务器应用程序运行正常,但客户端应用程序正在抛出UnknownHostException。我认为问题可能与两个应用程序中使用的IP地址无效有关。我在Mac上运行它,我并不认为自己是IP地址的专家,但我认为编写实际打印出IP地址的代码可能是一个好主意,如下所示,以防万一这一切都很有帮助。
java.net.InetAddress address = java.net.InetAddress.getLocalHost();
System.out.println("IP Address :"+address.getHostAddress());
但是,这段代码返回一些数字,如463.827.201.789(不是真的这只是为了演示目的),这绝对不能作为我正在使用的Socket构造函数的参数。
无论如何,我不知道问题是什么,我需要帮助。
打印InetAddress对象getHostAddress()方法打印地址的文本表示(在API中指定,检查http://download.oracle.com/javase/6/docs/api/java/net/InetAddress.html#getHostAddress())。这应该是您的计算机的IP地址? (或者可能是127.0.0.1,始终指向本地计算机的地址)。
Socket类(http://download.oracle.com/javase/6/docs/api/java/net/Socket.html)在构造函数中获取一个InetAddress +端口号,因此您应该能够将它传递给InetAddress和SocketServer侦听的第一个参数和端口号。 (每个服务器套接字在端口号上打开一个监听器,您基本上可以自己选择,检查http://download.oracle.com/javase/6/docs/api/java/net/ServerSocket.html)。
在线
socket = new Socket("kq6py", 4444);
你提供了什么而不是“kq6py”?假设您的服务器程序与客户端在同一台计算机上运行 - 您应该尝试“localhost”或“127.0.0.1”