互联网上的 Java 套接字

标签 java sockets networking router

我已经使用java套接字编写了客户端和服务器。两台机器在同一网络上。当我使用本地 IP 地址进行连接时,没有任何问题。但是,如果我使用公共(public)IP地址,连接超时,客户端抛出“SocketException:连接重置”,服务器抛出“SocketException:对等方重置连接:套接字写入错误”。这种情况大多数时候都会发生,但连接成功的情况却千载难逢。我可以从客户端计算机成功 ping 服务器本地地址和路由器。

我已进入路由器,为服务器计算机分配一个永久 IP 地址,并将相关端口上的所有流量转发到该 IP 地址。不幸的是,这是我认为可以解决问题的唯一方法,但事实并非如此。我也关闭了服务器上的Windows防火墙,仍然没有运气。

客户端:(IP取自whatismyip.com)

Socket s = new Socket("xx.xxx.xxx.xx", 27499);

连接。

服务器:

InetAddress ip = InetAddress.getLocalHost();
ServerSocket ss = new ServerSocket(27499, 0, ip);
Socket cs = ss.accept();

如有任何帮助,我们将不胜感激。如果需要,我可以提供更多代码。

最佳答案

“SocketException:连接被对等方重置:套接字写入错误”

这意味着服务器实际上拒绝连接,可能是防火墙问题,服务器拒绝连接,服务器实际上已关闭或过载。

关于互联网上的 Java 套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16095420/

相关文章:

java - 什么是 Java 中的 'single-generation' 垃圾收集器?

c中socket编程的客户端服务器进程执行

c# - 你如何在 C# 中使用 TCP 客户端读取整个输入缓冲区?

java - writeUTF(String s) 与 writeObject(String s)

linux - 将流量从 WIndows 路由到 Linux(Kali)

java - SortedSet 上的 Guava Joiner

java - 选择应加载项目的哪个可运行类

java - OpenAM 12 的本地 Maven 依赖项

linux - linux中如何同步socket服务器和客户端之间的通信速率

c# - 与 UWP 应用程序的网络连接