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 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 R语言卸载之后无法重装,显示电脑存在下载某些较大二进制文件行为,怎么办
  • ¥15 java 的protected权限 ,问题在注释里