📄 gbnclient.java
字号:
import java.io.*;
import java.net.*;
import javax.swing.Timer;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class GbnClient{
public static void main(String args[]) throws Exception
{
DatagramSocket serverSocket = new DatagramSocket(9876);
boolean flag=false;
Timer[] tt =new Timer[5];
String[] send=new String[5];
int n=0;
for(int k=0;k<5;k++)
send[k]=k+" "+"packet";
InetAddress sendto = InetAddress.getByName("localhost");
byte[] receiveData = new byte[100];
byte[] sendData = new byte[100];
for(int k=0;k<5;k++)
{
sendData = send[k].getBytes();
DatagramPacket sendPacket = new DatagramPacket(sendData,sendData.length,sendto,6789);
serverSocket.send(sendPacket);
ActionListener taskPerformer =new myActionListener(serverSocket,sendPacket,k);
tt[k]=new Timer(5000 ,taskPerformer);
tt[k].start();
}
while(flag==false){
DatagramPacket receivePacket = new DatagramPacket(receiveData,receiveData.length );
serverSocket.receive(receivePacket);
String sentence=new String(receivePacket.getData());
char b=sentence.charAt(0);
int i=b-'0';
if(i<=n){
n++;
System.out.println("");
System.out.println("********receveived the ack "+i+" and stop sending Packet["+i+"] ********");
System.out.println("");
System.out.println("");
System.out.println("");
tt[i].stop();
}
if (n==5){
System.out.println("\n\n\n\nall the data is send ");
}
}
}
}
class myActionListener implements ActionListener {
private DatagramSocket serverSocket;
private DatagramPacket sendPacket;
int k;
public myActionListener(DatagramSocket serversocket,DatagramPacket sendpacket,int i)
{
serverSocket = serversocket;
sendPacket= sendpacket;
k=i;
}
public void actionPerformed(ActionEvent e) {
System.out.println("Time out! \nPacket "+k+" does not receive reply, send again");
try{
serverSocket.send(sendPacket);
}
catch(Exception exception){}
};
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -