小编Dio*_*nes的帖子

客户端中的 DatagramSocket 未绑定到服务器中的端口。端口已被使用

我有一个服务器正在等待客户端通过 DatagramSocket 发送数据包。但是当在客户端中我使用与服务器相同的端口时(以便它们可以通信)我在客户端得到一个异常:

Exception in thread "main" java.net.BindException: Address already in use: Cannot bind
at java.net.DualStackPlainDatagramSocketImpl.socketBind(Native Method)
at java.net.DualStackPlainDatagramSocketImpl.bind0(DualStackPlainDatagramSocketImpl.java:80)
at java.net.AbstractPlainDatagramSocketImpl.bind(AbstractPlainDatagramSocketImpl.java:93)
at java.net.DatagramSocket.bind(DatagramSocket.java:372)
at java.net.DatagramSocket.<init>(DatagramSocket.java:222)
at java.net.DatagramSocket.<init>(DatagramSocket.java:279)
at tp.Repositorio.main(Cliente.java:146)
Run Code Online (Sandbox Code Playgroud)

所以在服务器端,我有一个线程正在处理数据包。像这样的东西:

addr = InetAddress.getByName("localhost");
DatagramSocket socket = new DatagramSocket(5008, addr);
DatagramPacket packet = new DatagramPacket(buff, buff.length);
 while(true)
    {
      s.receive(packet);
// and then it throws another thread to treat the packet...
    }
Run Code Online (Sandbox Code Playgroud)

在客户端,我有这样的事情:

 InetAddress inet;
 inet = InetAddress.getByName("localhost");
 s_data = new DatagramSocket(5008, inet);
Run Code Online (Sandbox Code Playgroud)

我试图更改双方的端口,但它也给了我这个例外。如果我将端口更改为例如服务器中的 5003 和客户端中的 5004,它不会给我任何异常(当然)但它们无法相互连接。

你们有什么想法可以解决这个问题吗?

谢谢。

编辑:

这是以下客户端代码(称为 repositorio): …

java sockets networking network-programming bind

1
推荐指数
1
解决办法
6626
查看次数

标签 统计

bind ×1

java ×1

network-programming ×1

networking ×1

sockets ×1