java 中用多线程实现 UDP 传输的问题

我用多线程实现了发送数据和接收数据的 UDP 传输
但是结果很奇怪,第一次键盘输入后传输过来的数据是正常的
但往后的数据传输结果就开始变得很奇怪,总是莫名其妙多出很多字母图片说明

但是我是跟着视频写的代码,我把视频里的代码复制过来也是这么回事,是不是
java 版本的问题??我的java是最新版的
以下是代码部分,请各位大神不吝赐教,谢谢!

public class Demo5_Thread {

    public static void main(String[] args) {
        new Receive().start();                  
        new Socket().start();               
    }

}

//发送方
class Socket extends Thread {
    public void run() {
        try {
            Scanner sc = new Scanner(System.in);
            DatagramSocket socket = new DatagramSocket();
            while (true) {
                String line = sc.nextLine();
                if ("quit".equals(line)) {
                    break;
                }
                DatagramPacket packet = 
                        new DatagramPacket(line.getBytes(), line.getBytes().length, InetAddress.getByName("10.24.3.58"), 666);
                socket.send(packet);
            }
            socket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

//接收方
class Receive extends Thread{
    public void run() {
        try {
            DatagramSocket socket = new DatagramSocket(666);
            DatagramPacket packet = new DatagramPacket(new byte[1024], 1024);
            while (true) {
                socket.receive(packet);
                String ip = packet.getAddress().getHostAddress();                   
                int port = packet.getPort();                                        
                byte[] arr = packet.getData();                                      
                int len = packet.getLength();                                   
                System.out.println(ip + ":" + port + ":" + new String(arr, 0, len));
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

2个回答

同一份代码我试了好像是正常的。。图片说明

Wong_DaJ
Wong_DJ 谢谢!应该是输入法的问题吧
5 个月之前 回复

大概是你输入法有问题。我这正常

Wong_DaJ
Wong_DJ 谢谢!我再检查检查!
5 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问

相似问题

5
java线程问题(很简单的程序)?
5
【mybatis】如果程序中查询sql结果为空,会返回null还是空集合
2
如何将用Spyder写的程序封装成一个函数,生成一个和Java连接的端口?
2
SpringBoot中用@Value读取yml中的值报错
1
Java8中直接new对象和用 类名::new 创建对象这两种形式有什么区别吗?
1
关于 keras 中用ImageDataGenerator 做 data augmentation 的问题
1
在php代码中调用java代码
3
eclipse中用 jdbc连接是BasicDataSource.getConnection()一直报空指针异常
1
fastdfs 防盗链 python生成token的算法是什么?
2
在java项目中用json传值的get请求,接收返回值时直接跳到错误?
1
VS中用自带的chart生成的图,一个位置上一共要有100多次图,每次如何改变数据库连接的内容
1
如何正确关闭neo4j插件graphaware的runtime
1
vue中用html2canvas转换图片 图片不完整 或有偏移 有空白区域
1
在VS中用sqlite作为数据库设计窗体应用,一定要用到sqlite3吗,sqlite3到底用来干什么的
1
Django中静态文件的加载及模板中{% static %}标签的使用问题
3
Labview下拉列表的问题:下拉列表怎么在刚打开labview的时候就显示第二项
1
安卓提取短信URL的问题
1
怎在springboot中用css时背景图片用绝对路径
1
mysql中用EVENT事件定时改变表名,怎样避免在改表名的时候表被selcet,insert等操作锁表
2
在C#中用主窗口的控件控制子窗口的控件,子窗口(Win1)访问主窗口(Form1)的控件