gpt4 book ai didi

Java 套接字在 LAN 上工作,但不能在 Internet 上工作?

转载 作者:搜寻专家 更新时间:2023-11-01 01:18:06 25 4
gpt4 key购买 nike

您好,我正在制作一款 Java 多人游戏,一切正常。它拥有某人需要的一切,但我发现了一个问题,它使用 ServerSocket 作为服务器,使用 Socket 作为客户端,工作正常,但最大的问题是它不能在全局范围内工作。只有 LAN,我什至尝试过 Hamachi,但也没有用。

你有什么想法吗?

更多信息:我在服务器中使用特定线程来接受、发送和接收套接字,并在客户端中使用特定线程来发送和接收。它发送一个我制作的包含所有信息的对象。

ip = InetAddress.getLocalHost().getHostAddress() + ":" + port;

server = new ServerSocket();

//This asks you if you want to use a specific IP or just the one that we got in first line
String socketaddress;
socketaddress = (String) JOptionPane.showInputDialog(null, "IP: ", "Info",JOptionPane.INFORMATION_MESSAGE,null,null,InetAddress.getLocalHost().getHostAddress());
server.bind(new InetSocketAddress(socketaddress, port));

//Here it starts the accept thread, and then it starts send and receive threads
new Thread(accept).start();

以下是我认为最重要的来自客户的内容:

socket = new Socket(ip,port);

String set_username = System.getProperty("user.name");
set_username = (String) JOptionPane.showInputDialog(null, "Username: ", "Info", JOptionPane.INFORMATION_MESSAGE,null,null,set_username);
username = set_username;

//It sends the username to server
ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
oos.writeObject(username);

//Then server responds with a message
ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
String response = (String) ois.readObject();

//This writes the server' message
JOptionPane.showMessageDialog(null, response, "Message",JOptionPane.INFORMATION_MESSAGE);

我还有另一个问题,套接字从一个客户端到另一个客户端大约需要 3 或 4 秒,而且应该几乎是即时的,因为它在同一个网络上,而且我有一个快速的互联网。

编辑:我尝试在与客户端相同的电脑上创建一个服务器,然后在使用我的全局 IP 加入时,它没有工作:(

编辑:它的工作我现在很开心我所要做的就是在防火墙中添加端口非常感谢你们:D。现在我可以和我的 friend 们一起玩了:3

最佳答案

当您连接到 Internet 上的 Java Web 服务器时,它将使用 ServerSocket 和 Socket。这很好用。

可能不起作用的是 Internet 上的用户无法连接到您,因为您在防火墙或路由器/NAT 后面(与 Java 无关)。在 Internet 上的用户可以通过 IP 地址远程登录到您计算机上的端口之前,使用 Java 不会使这项工作有任何不同。

顺便说一句:您应该始终在创建 ObjectInputStream 之前创建 ObjectOutputStream 和 flush() ,否则另一端的 ObjectInputStream 会永远阻塞。

关于Java 套接字在 LAN 上工作,但不能在 Internet 上工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10094420/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com