a1670131049 2019-03-19 12:00 采纳率: 50%
浏览 300
已采纳

Java UD协议,聊天程序

问题:
First.class 是发送端,从键盘录入,发送内容到 Jieshou.class ,键入over结束发送。
Jieshou.class 是接受端。
我的目的是从发送端不断键入数据到接收端,通过自定义结束标记 “over”结束程序。
问题是,只从发送端输入了一次数据,接收端接收了,之后就抛出异常。
请教该如何解决

public class First {
    public static void main(String[] arg) throws IOException{
        System.out.println("发送端启动。。");
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        String line=null;
        DatagramSocket ds=new DatagramSocket(8888);
        while((line=br.readLine())!=null){
            byte[] buf=line.getBytes();
            DatagramPacket dp=new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.189.1"),9999);
            ds.send(dp);
            if("over".equals(line))
                break;
        }
        ds.close();
    }
}

public class Jieshou {
    public static void main(String[] args) throws IOException{
        System.out.println("接受端启动。。");
        while(true){
            DatagramSocket ds=new DatagramSocket(9999);
            byte[] buf=new byte[1024];
            DatagramPacket dp=new DatagramPacket(buf,buf.length);
            ds.receive(dp);

            String t=new String(dp.getData(),0,dp.getLength());
            System.out.println(t+".."+dp.getAddress().getHostAddress()+":"+dp.getPort());
        }
    }
}

异常代码:

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(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 Test.Jieshou.main(Jieshou.java:11)

  • 写回答

1条回答 默认 最新

  • 毕小宝 博客专家认证 2019-03-19 13:57
    关注

    是不是服务端重复运行了?
    JieShou.class是死循环,只需要运行一次就可以了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘