我用多线程实现了发送数据和接收数据的 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();
}
}
}