java - Java套接字连接失败

标签 java sockets networking network-programming serversocket

我有一个Java代码在我的计算机上运行,​​而我的 friend 有一个客户代码在他的计算机上运行。当他输入我的IP以便连接到我的服务器并获取日期时,连接失败并且什么也没有发生。请注意,当我在自己的计算机上运行服务器和客户端程序并输入 localhost 作为地址时,连接成功,并且我正确获得了日期消息。我正在寻找可能的错误和引起此问题的问题。

Java中的服务器代码:

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

public class Server {
    public static void main(String[] args) throws IOException {
        ServerSocket listener = new ServerSocket(9999);
        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();
        }
    }
}

Java客户端代码:
import javax.swing.*;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;

public class Client {
    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 9999:");
        Socket s = new Socket(serverAddress, 9999);
        BufferedReader input =
                new BufferedReader(new InputStreamReader(s.getInputStream()));
        String answer = input.readLine();
        JOptionPane.showMessageDialog(null, answer);
        System.exit(0);
    }
}

最佳答案

某些路由器可能会将不同网络中的计算机隔离开。尝试在Wifi上的两台计算机上或两台都连接到路由器的计算机上进行尝试。您的IP是否在同一网络上?您可以在网络上看到 friend 的计算机吗?路由器上可能还会有一些安全性配置。

除此之外,还有防火墙问题(已禁用),该代码看起来应该可以正常工作。

关于java - Java套接字连接失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31189899/

相关文章:

http - 如何重新组装tcp段?

c++ - 如何使用 winsock (c++) 发送\接收非字符数据?

java - 如何为 Java 类字段生成准确的泛型表达式?

c - C 中的 SSL 密码帮助

java - 无法使用 Hector 在 cassandra db 中插入值

c - 通过服务器向特定客户端发送数据

java - 如何在 Android 中创建监听 localhost 端口的套接字

networking - PING 使用哪些协议(protocol)?

java - onClick fragment 找不到方法

java - 如何使用java获取表的不可空列?