2

我有一个小程序,其中一个Server-Client程序连接到同一个网络上,但同一个程序connection time out在客户端程序中显示错误。我已经使用LAN电缆连接了两个系统。

服务器

import java.io.IOException;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Date;

public class DateServer {

  public static void main(String[] args) throws IOException {
    ServerSocket listener = new ServerSocket(9090);
    try {
      while (true) {
        Socket socket = listener.accept();
        try {
          PrintWriter out =
            new PrintWriter(socket.getOutputStream(), true);
          out.println(new Date().toString());
        } finally {
          socket.close();
        }
      }
    } finally {
      listener.close();
    }
  }
}

客户

import java.io.BufferedReader;
import java.io.IOException ;
import java.io.InputStreamReader;
import java.net.Socket;

import javax.swing.JOptionPane;

public class DateClient {

  public static void main(String[] args) throws IOException {
    String serverAddress = JOptionPane.showInputDialog(
      "Enter IP Address of a machine that is\n" +
      "running the date service on port 9090:");
    Socket s = new Socket(serverAddress, 9090);
    BufferedReader input =
      new BufferedReader(new InputStreamReader(s.getInputStream()));
    String answer = input.readLine();
    JOptionPane.showMessageDialog(null, answer);
    System.exit(0);
  }
}
4

2 回答 2

0

由于代码在同一台计算机上运行,​​我想到了三种可能性:

  1. 问题可能是您的防火墙/对端口权限的访问,也可能是其他人提到的 IP 地址。
  2. 您设置的服务器IP地址错误。
  3. 服务器的 IP 地址不在您网络的子网掩码上。如果您已经用电缆将两台计算机连接起来(中间没有路由器),您可能还没有设置 DHCP,也就是说,您的 IP 地址应该是手动选择的。如果 ip 是随机选择的,很可能您的客户端计算机找不到服务器计算机。尝试手动将两台计算机的 ip 地址设置为同一子网掩码范围内的无效地址,看看是否有效。

例如设置以下地址:

客户端 IP:192.168.1.10 子网掩码:255.255.255.0

服务器 IP:192.168.1.11 子网掩码:255.255.255.0

于 2015-04-14T06:47:14.573 回答
0

使用 LAN 电缆连接两个系统是不够的。您必须确保它们具有不同的 IP 地址,都在同一个 IP 子网中,和/或定义了适当的 IP 路由表。更典型的是,您将通过路由器连接两者。

于 2015-04-14T07:08:19.580 回答