客户端套接字找不到服务器套接字。尽管具有相同的端口号,但抛出 UnknownHostException
Client Socket cannot find Server Socket. Throws UnknownHostException despite having the same port number
在我真正开始使用它们之前,我正在学习在线教程以适应 Java 中的客户端和服务器。
我现在要做的就是启动服务器,然后连接客户端。客户端和服务器只有几行代码,我觉得一切都很简单,所以我不确定问题出在哪里。
我 运行 我的服务器程序,然后 运行 我的客户端程序,但是客户端套接字由于某种原因找不到我的服务器套接字,即使它们具有相同的端口号。
这是代码。
服务器:
public class Server {
private ServerSocket serverSocket;
private int portNumber;
public Server(int portNumber){
this.portNumber=portNumber;
}
public void run() throws IOException {
serverSocket = new ServerSocket(portNumber);
System.out.println("server at port "+portNumber);
System.out.println("Waiting for client.");
Socket clientSocket = serverSocket.accept();
System.out.println("Connected.");
}
public static void main(String[] args) {
int portNumber = 9999;
try {
Server serverSocket = new Server(portNumber);
serverSocket.run();
}
catch(IOException e){
e.printStackTrace();
}
}
}
然后我的客户端程序:
public class Client {
private int portNumber;
private String host;
Socket clientSocket;
public Client(int portNumber,String host){
this.portNumber=portNumber;
this.host=host;
}
public void connect() throws IOException, UnknownHostException {
System.out.println("Connecting to port "+portNumber);
clientSocket = new Socket(host,portNumber);
System.out.println("Connected");
}
public static void main(String arg[]){
Client clientSocket = new Client(9999,"host");
try {
clientSocket.connect();
}
catch(UnknownHostException e){
System.err.println("Can't connect to host");
}
catch (IOException e) {
System.err.println("Can't connet. "+e.getMessage());
}
}
}
UnknownHostException
当我 运行 客户端程序时抛出。
我以为我非常仔细地学习了教程,但我不知道我的代码有什么问题。
我猜它与我的 connect()
方法有关,因为那是抛出异常的地方,但我不能肯定地说。
有什么想法吗?
在你的代码中
Client clientSocket = new Client(9999,"host");
你能改变吗运行
Client clientSocket = new Client(9999,"localhost");
您的代码正在寻找名为 "host" 的主机。要么给它主机的IP地址。
如果你想使用上面定义的变量主机使用
Client clientSocket = new Client(9999,host);
但是我没有看到它正在初始化的地方
在我真正开始使用它们之前,我正在学习在线教程以适应 Java 中的客户端和服务器。
我现在要做的就是启动服务器,然后连接客户端。客户端和服务器只有几行代码,我觉得一切都很简单,所以我不确定问题出在哪里。
我 运行 我的服务器程序,然后 运行 我的客户端程序,但是客户端套接字由于某种原因找不到我的服务器套接字,即使它们具有相同的端口号。
这是代码。
服务器:
public class Server {
private ServerSocket serverSocket;
private int portNumber;
public Server(int portNumber){
this.portNumber=portNumber;
}
public void run() throws IOException {
serverSocket = new ServerSocket(portNumber);
System.out.println("server at port "+portNumber);
System.out.println("Waiting for client.");
Socket clientSocket = serverSocket.accept();
System.out.println("Connected.");
}
public static void main(String[] args) {
int portNumber = 9999;
try {
Server serverSocket = new Server(portNumber);
serverSocket.run();
}
catch(IOException e){
e.printStackTrace();
}
}
}
然后我的客户端程序:
public class Client {
private int portNumber;
private String host;
Socket clientSocket;
public Client(int portNumber,String host){
this.portNumber=portNumber;
this.host=host;
}
public void connect() throws IOException, UnknownHostException {
System.out.println("Connecting to port "+portNumber);
clientSocket = new Socket(host,portNumber);
System.out.println("Connected");
}
public static void main(String arg[]){
Client clientSocket = new Client(9999,"host");
try {
clientSocket.connect();
}
catch(UnknownHostException e){
System.err.println("Can't connect to host");
}
catch (IOException e) {
System.err.println("Can't connet. "+e.getMessage());
}
}
}
UnknownHostException
当我 运行 客户端程序时抛出。
我以为我非常仔细地学习了教程,但我不知道我的代码有什么问题。
我猜它与我的 connect()
方法有关,因为那是抛出异常的地方,但我不能肯定地说。
有什么想法吗?
在你的代码中
Client clientSocket = new Client(9999,"host");
你能改变吗运行
Client clientSocket = new Client(9999,"localhost");
您的代码正在寻找名为 "host" 的主机。要么给它主机的IP地址。 如果你想使用上面定义的变量主机使用
Client clientSocket = new Client(9999,host);
但是我没有看到它正在初始化的地方