📄 gbnclient.java
字号:
import java.io.*;
import java.net.*;
public class GBNClient
{
public void go() throws IOException,UnknownHostException
{
DatagramSocket datagramSocket;
DatagramPacket inDataPacket;
DatagramPacket outDataPacket;
InetAddress serverAddress;
byte[] msg = new byte[1];
int i = 0,j;
String[] data = {"first","second","third","forth","end"};
String da;
String en = "complete";
int prev = -1;
int rec = 0;
String receivedMsg;
datagramSocket = new DatagramSocket();
serverAddress = InetAddress.getLocalHost();
while(!data[i].equals("end"))
{
da = i + data[i];
outDataPacket = new DatagramPacket(da.getBytes(),da.getBytes().length,serverAddress,8000);
datagramSocket.send(outDataPacket);
i++;
}
da = i + data[i];
outDataPacket = new DatagramPacket(da.getBytes(),da.getBytes().length,serverAddress,8000);
datagramSocket.send(outDataPacket);
while(true){
inDataPacket = new DatagramPacket(msg,msg.length);
datagramSocket.receive(inDataPacket);
receivedMsg = new String(inDataPacket.getData(),0,inDataPacket.getLength());
prev = rec;
rec = Integer.parseInt(receivedMsg);
System.out.println(rec + 1);
if(rec == (prev + 1) && (rec == 4))
break;
else if(rec == (prev + 1))
continue;
else if(rec > prev + 1)
{
j = prev + 1;
System.out.println("Ack " + (j+1) + " lost. Resend....");
while(!data[j].equals("end"))
{
da = j + data[j];
outDataPacket = new DatagramPacket(da.getBytes(),da.getBytes().length,serverAddress,8000);
datagramSocket.send(outDataPacket);
j++;
}
da = j + data[j];
outDataPacket = new DatagramPacket(da.getBytes(),da.getBytes().length,serverAddress,8000);
datagramSocket.send(outDataPacket);
}
}
outDataPacket = new DatagramPacket(en.getBytes(),en.getBytes().length,serverAddress,8000);
datagramSocket.send(outDataPacket);
System.out.println("Data send complete!");
}
public static void main(String[] args)
{
GBNClient gbn = new GBNClient();
try
{
gbn.go();
}
catch(Exception e)
{
System.out.println("Exception occured with socket");
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -