Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java网络-Java.net.BindException_Java_Network Programming_Lwjgl - Fatal编程技术网

Java网络-Java.net.BindException

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

我正在创建一个LWJGL战略游戏,并在其中实现多人游戏

现在,游戏正在生成一个具有不同瓷砖类型的世界

我想我应该现在就开始实现联网,让服务器生成这个世界,所有加入的客户端都下载并加载这个世界,尽管这个游戏几乎不可玩,但让以后更容易实现更高级的东西。现在来看看问题

我正在观看由制作的有关网络实现的教程,但我发现了以下错误:

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();