Java网络-Java.net.BindException
我正在创建一个LWJGL战略游戏,并在其中实现多人游戏 现在,游戏正在生成一个具有不同瓷砖类型的世界 我想我应该现在就开始实现联网,让服务器生成这个世界,所有加入的客户端都下载并加载这个世界,尽管这个游戏几乎不可玩,但让以后更容易实现更高级的东西。现在来看看问题 我正在观看由制作的有关网络实现的教程,但我发现了以下错误:Java网络-Java.net.BindException,java,network-programming,lwjgl,Java,Network Programming,Lwjgl,我正在创建一个LWJGL战略游戏,并在其中实现多人游戏 现在,游戏正在生成一个具有不同瓷砖类型的世界 我想我应该现在就开始实现联网,让服务器生成这个世界,所有加入的客户端都下载并加载这个世界,尽管这个游戏几乎不可玩,但让以后更容易实现更高级的东西。现在来看看问题 我正在观看由制作的有关网络实现的教程,但我发现了以下错误: java.net.BindException: Address already in use: Cannot bind at java.net.DualStackPla
java.net.BindException: Address already in use: Cannot bind
at java.net.DualStackPlainDatagramSocketImpl.socketBind(Native Method)
at java.net.DualStackPlainDatagramSocketImpl.bind0(Unknown Source)
at java.net.AbstractPlainDatagramSocketImpl.bind(Unknown Source)
at java.net.DatagramSocket.bind(Unknown Source)
at java.net.DatagramSocket.<init>(Unknown Source)
at java.net.DatagramSocket.<init>(Unknown Source)
at java.net.DatagramSocket.<init>(Unknown Source)
at com.tdd12.eotu.net.GameServer.<init>(GameServer.java:22)
at com.tdd12.eotu.Game.<init>(Game.java:39)
at com.tdd12.eotu.Game.main(Game.java:121)
Exception in thread "Thread-3" java.lang.NullPointerException
at com.tdd12.eotu.net.GameServer.run(GameServer.java:37)
GameClient.java:
如果有人能帮我,我将不胜感激。
谢谢 正如Diptopol Dam所说,他称
DatagramSocket.close();
方法在关闭应用程序之前修复该问题。谢谢迪普托波尔大坝 我认为港口没有正常关闭。因此,当服务器第二次尝试侦听上一次运行已占用的端口时,会出现此错误。好的,您知道如何再次关闭端口吗?我认为datagramSocket.close可以解决此问题。好的,我试试看。我现在有一些问题,但我会解决它们,然后带着答案回来。
// The IP address
private InetAddress ipAddress;
// The socket
private DatagramSocket socket;
// The main game
private Game game;
// The constructor
public GameClient(Game game, String ipAddress) {
// Assign variables
this.game = game;
try {
this.socket = new DatagramSocket();
this.ipAddress = InetAddress.getByName(ipAddress);
} catch (SocketException | UnknownHostException e) {
e.printStackTrace();
}
}
// Run the thread
public void run() {
while(true) {
// The data to include in the packet (data to send)
byte[] data = new byte[1024];
// The packet to send
DatagramPacket packet = new DatagramPacket(data, data.length);
// Recieve data from the server
try {
socket.receive(packet);
} catch (IOException e) {
e.printStackTrace();
}
// Print the data
System.out.println("SERVER > " + new String(packet.getData()));
}
}
// Send data to the server
public void sendData(byte[] data) {
// Create a new packet with the inputed data
DatagramPacket packet = new DatagramPacket(data, data.length, ipAddress, 9527);
// Send the packet to the server
try {
socket.send(packet);
} catch (IOException e) {
e.printStackTrace();
}
}
DatagramSocket.close();