📄 client.java
字号:
import java.io.*;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.net.SocketException;
import java.net.SocketTimeoutException;
import javax.net.*;
public class Client {
private static boolean send;
private static int number;
public static void sendOrNot() {
int number = (int) (Math.random() * 100);
System.out.println(number);
if (number >= 50) {
send = true;
} else {
send = false;
}
}
public static void main(String[] args) throws IOException {
byte[] by = new byte[1024];
byte[] bt = new byte[1024];
//byte[] be = new byte[1024];
int i = 1;
String[] s = new String[10];
DatagramSocket ds = new DatagramSocket(8888);
DatagramPacket dp1 = null;
DatagramPacket dp2 = null;
//DatagramPacket dp3 = null;
DatagramPacket dp = new DatagramPacket(by, by.length);
FileReader fr = new FileReader("f:/ss/ss.txt");
BufferedReader br = new BufferedReader(fr);
int num = 0;
for (i = 1;; i++) {
String str = br.readLine();
if (str == null)
break;
s[i] = i + str;
System.out.println(s[i]);
by = s[i].getBytes();
String str1 = br.readLine();
s[++i] = i + str1;
bt = s[i].getBytes();
System.out.println(s[i]);
dp1 = new DatagramPacket(by, by.length, new InetSocketAddress(
"127.0.0.1", 9000));
dp2 = new DatagramPacket(bt, bt.length, new InetSocketAddress(
"127.0.0.1", 9000));
while (num != (i - 1)) {// 如果第一次没有收到包,说明两个都没有发送到
Client.sendOrNot();
if (send) {
System.out.println("发送第" + (i - 1) + "个包!");
ds.send(dp1);// 发送第一个包
} else {
System.out.println("没有发送第" + (i - 1) + "个包!");
}
if(str1 != null){
Client.sendOrNot();
if (send) {
System.out.println("发送第" + i + "个包!");
ds.send(dp2);// 发送第2个包
} else {
System.out.println("没有发送第" + i + "个包!");
}
}else{
System.out.println("文件以空,没发送第" + i + "个包!");
}
try {
ds.setSoTimeout(5000);
ds.receive(dp);
String s1 = new String(dp.getData(), 0, dp.getLength());
Integer it = new Integer(s1);
num = it.intValue();
if (num == (i - 1)) {
System.out.println("服务器已收到第" + (i - 1) + "个包!");
}
if (num == i) {
System.out.println("服务器已收到第" + i + "个包!,但是没有收到第"
+ (i - 1) + "个包!重新发送两个包!");
}
} catch (SocketTimeoutException ex) {
System.out.println("服务器两个包都没收到,重新发送");
}
}
if(str1 != null){
while (num != i) {
try {
ds.setSoTimeout(5000);
ds.receive(dp);
String s1 = new String(dp.getData(), 0, dp.getLength());
Integer it = new Integer(s1);
num = it.intValue();
if (num == i) {
System.out.println("服务器已收到第" + i + "个包!");
}
} catch (SocketTimeoutException e) {
System.out.println("没有收到第2个包");
System.out.println("发送第2个包");
ds.send(dp2);
}
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -