Java 在一台计算机上运行服务器和客户端(netbeans 8.1)

Java 在一台计算机上运行服务器和客户端(netbeans 8.1),java,macos,netbeans,Java,Macos,Netbeans,我在一台(mac)机器上运行服务器和客户端时遇到问题。我可以运行服务器,但当我运行客户端时,它会给我一个错误java.net.BindException:地址已在使用中 在java.net.PlainDatagramSocketImpl.bind0(本机方法) 据我所知,需要使用ssh调用,但我不知道如何使用它来解决这个问题。 谢谢 您可能需要在此处更改以下几点: 1) 您正在从客户机的端口4000上发送UDP数据包,但正在侦听服务器(接收器)代码中的端口3000。端口应该相同 2) 服务器代

我在一台(mac)机器上运行服务器和客户端时遇到问题。我可以运行服务器,但当我运行客户端时,它会给我一个错误
java.net.BindException:地址已在使用中
在java.net.PlainDatagramSocketImpl.bind0(本机方法)
据我所知,需要使用ssh调用,但我不知道如何使用它来解决这个问题。 谢谢


您可能需要在此处更改以下几点:

1) 您正在从客户机的端口4000上发送UDP数据包,但正在侦听服务器(接收器)代码中的端口3000。端口应该相同

2) 服务器代码的另一个实例可能运行在另一个Netbeans选项卡中,也可能来自已绑定到端口的终端。请确保服务器代码只运行一个实例。这将解决您的“地址已在使用错误”

3) 我还在您设置的无限while循环的客户端(发送方)代码中添加了“Thread.sleep(500)”。没有这一点,代码在我的机器上以“坏文件描述符”错误结束。可能是由于套接字句柄与无限循环发生冲突


通过这些更改,客户端和服务器之间的数据交换工作正常。

该错误很可能意味着您分配给客户端应用程序的端口已在使用中。但是,此错误与SSH无关。为了进一步帮助您,请发布您正在使用的代码片段以及您迄今为止尝试的步骤。
public class WRRCourseWork {
public static void main(String[] args) {
    try {
        DatagramSocket IN_socket = new DatagramSocket(3000);
        DatagramSocket OUT_socket = new DatagramSocket(5000);
        IN_socket.setSoTimeout(0);
        byte[] buffer = new byte[1024];
        DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
        while (true) {
            //recive the message 

            IN_socket.receive(packet);
            String message = new String(buffer);
            System.out.println("Got message: " + message.trim());

            // send the message 
            String host = "";
            InetAddress addr = InetAddress.getByName(host);
            DatagramPacket OUT_Packet = new DatagramPacket(message.getBytes(), message.getBytes().length, addr, 5000);
            OUT_socket.send(OUT_Packet);
            System.out.println("Sending Message: "+ message.trim());
        } 

    } catch (Exception error) {
        error.printStackTrace();
    }
}
    public class Messages {
    public static void main(String [] args) {
        System.out.println("hiiiiiii");
        //String host = "localhost";
        try {
            while (true) {
                InetAddress addr = InetAddress.getLocalHost();
                String message = "Hello World";
                DatagramPacket packet = new DatagramPacket(message.getBytes(), message.getBytes().length, addr, 4000);
                DatagramSocket socket = new DatagramSocket(4000);
                socket.send(packet);
                //socket.close();
            }
        } catch(Exception error) {
            // catch all errors
            error.printStackTrace();
        }
    }
}