会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132432个问题
JAVA 全系列/第二阶段:JAVA 基础深化和提高/手写服务器项目(旧) 2911楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/IO 流技术(旧) 2912楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/多线程和并发编程(旧) 2914楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/多线程和并发编程(旧) 2915楼

老师,我想问一下,为什么我敲的程序可以运行,不会报错,但是到了发消息的时候到了第三句对方就会收不到,三句可能就只能收到一句的这种情况,请您帮我看一看是怎么回事

package cn.zl.udp;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;

public class Test {
    public static void main(String[] args) throws IOException {
        System.out.println("--------=====客服=====--------");
        Scanner sc = new Scanner(System.in);
        //创建DatagramSocket对象
        DatagramSocket ds = new DatagramSocket(9999);
        while(true) {
            //创建字节数组的数据包,用于接受数据
            byte[] buf = new byte[1024];
            DatagramPacket dp = new DatagramPacket(buf, buf.length);
            //接收数据
            ds.receive(dp);
            String st = new String(dp.getData(), 0, dp.getLength());
            System.out.println("顾客:" + st);
            //准备需要发送的内容
            String s = sc.next();
            byte[] buff = s.getBytes();
            //创建DatagramPacket用于发送
            DatagramPacket dp2 = new DatagramPacket(buff, buff.length, InetAddress.getByName("localhost"), 8888);
            //发送
            ds.send(dp2);
            if("OK".equals(s)){
                break;
            }
        }
        ds.close();
    }
}
package cn.zl.udp;

import java.io.IOException;
import java.net.*;
import java.util.Scanner;

public class Test {
    public static void main(String[] args) throws IOException {
        System.out.println("----------=====顾客=====---------");
        Scanner sc = new Scanner(System.in);
        //创建DatagramSocket对象
        DatagramSocket ds = new DatagramSocket(8888);
        while(true) {
            //准备发送的数据
            byte[] buf = sc.next().getBytes();
            //创建数据包
            DatagramPacket dp = new DatagramPacket(buf, buf.length, InetAddress.getByName("localhost"), 9999);
            //发送数据
            ds.send(dp);
            //创建一个数组用于接收数据
            byte[] buf2 = new byte[1024];
            //创建一个DatagramSocket用于接收数据
            DatagramPacket dp2 = new DatagramPacket(buf2, buf2.length);
            //接收
            ds.receive(dp2);
            String st = new String(dp2.getData(), 0, dp2.getLength());
            System.out.println("人工:" + st);
            if("OK".equals(sc.next())){
                break;
            }
        }
        ds.close();
    }
}

运行的结果是这样的:

image.png

image.png

从第三句话开始就出现了收不到信息的情况

JAVA 全系列/第二阶段:JAVA 基础深化和提高/网络编程(旧) 2919楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/多线程和并发编程(旧) 2920楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/常用类 2922楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/常用类 2924楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/常用类 2925楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637