聊天室 游戏

按照下面的要求实现程序

UDP发送数据:数据来自于键盘录入,直到输入的数据是886,发送数据结束

UDP接收数据:因为接收端不知道发送端什么时候停止发送,故采用死循环接收

java

DatagramSocket ds = new DatagramSocket();

//2.打包数据
Scanner s = new Scanner(System.in);
while (true) {
    System.out.println("请输入");
    String str = s.nextLine();
    if("886".equals(str)) {
        break;
    }
    byte[] bytes = str.getBytes();


    InetAddress byName = InetAddress.getByName("127.0.0.1");
    //端口
    int port = 10086;
    //打包数据
    DatagramPacket dp = new DatagramPacket(bytes, bytes.length, byName, port);

    //3.发送数据
    ds.send(dp);
}


//4.释放资源
ds.close();

JavaBean

//1.创建DatagramSocket对象(快递公司)
//细节:
//在接收的时候,一定要绑定端口
//而且绑定的端口一定要跟发送的端口保持一致
DatagramSocket ds = new DatagramSocket(10086);

//2.接受数据包
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf, buf.length);

//该方法是阻塞的
//程序执行到这一步的时候,会在这里死等
//等发送端发送消息
//接受数据
while (true) {
    ds.receive(dp);

    //3.解析数据包
    byte[] data = dp.getData();
    int len = dp.getLength();
    String ip = dp.getAddress().getHostAddress();
    String name = dp.getAddress().getHostName();

    System.out.println("ip为:" + ip + ",主机名为:" + name + "的人,发送了数据:" + new String(data, 0, len));


}
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值