⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 send.java

📁 模拟停止等待ARQ协议,网络课的重要实验,采用APPLET UDP传输!
💻 JAVA
字号:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.*;
import java.math.*;
import java.applet.*;
import java.io.*;
import java.net.*;

public class send extends JApplet implements ActionListener,Runnable
{
	/**组件*/
	JPanel npanel;
	JScrollPane cpanel;
	JButton b1,b2;
	JLabel lb;
	JTextArea ta;
	JTextField tf;
	/**网络*/

	/**变量*/
	Thread thread;
	int i,j,len;
	String neirong;
	String shuju[],shujuzhen[];
	boolean st=false;
	public void init()
	{
		try
		{
			jbInit();
		}
		catch(Exception ee)
		{
			ee.printStackTrace();
			System.out.print("111");
		}
	}
	public void jbInit()throws Exception
	{
		npanel=new JPanel();
		b1=new JButton("发送");
		b2=new JButton("断开");
		lb=new JLabel();
		ta=new JTextArea(15,40);
		cpanel=new JScrollPane(ta);
		tf=new JTextField(20);
		setLayout(new BorderLayout());
		npanel.add(tf);
		npanel.add(b1);
		npanel.add(b2);
	//	cpanel.add(ta);
		add(npanel,BorderLayout.NORTH);
		add(cpanel,BorderLayout.CENTER);
		b1.addActionListener(this);
		b2.addActionListener(this);
		thread=new Thread(this);
		shuju=new String[100];
		shujuzhen=new String[100];
		for(i=0;i<100;i++)
		{
			shuju[i]=new String();
			shujuzhen[i]=new String();
		}
		thread.start();
	}	
	public void run()
	{
		show();
		DatagramPacket pack=null;
		DatagramSocket mail=null;
		byte b[]=new byte[8192];
		try{
			pack=new DatagramPacket(b,b.length);
			mail=new DatagramSocket(5678);
		}
		catch(Exception e){}
		while(true)
		{
		//	if(st==false)
		//	{
				try{
					mail.receive(pack);
					String message=new String(pack.getData(),0,pack.getLength());
					ta.append("\n 接收数据帧为:"+message+"\n");
					ta.setCaretPosition(ta.getText().length());
					time tt=new time();
					tt.start();
					if(message.equals("ACK"))
					{
						tt.stop();
						ta.append("发送成功\n");
					}
					else if(message.equals("NAK"))
					{
						tt.stop();
						ta.append("发送失败,正在重新发送...\n");
						thread.sleep(1000);
						fasong fs1=new fasong();
						fs1.start();
						thread.sleep(5000);
						byte d[]=tf.getText().trim().getBytes();
						try
						{
							InetAddress address=InetAddress.getByName("127.0.0.1");
							DatagramPacket data=new DatagramPacket(d,d.length,address,1234);
							DatagramSocket m=new DatagramSocket();
							m.send(data);
							String msg=new String(data.getData(),0,data.getLength());
							thread.sleep(1000);
							ta.append("已发送"+msg+"\n");
						//	thread.sleep()
						}
					catch(Exception eee){
					}
					}
					else if(message.equals(""))
					{
						thread.sleep(10000);
						ta.append("发送数据丢失,正在重新发送...\n");
						thread.sleep(1000);
						fasong fs1=new fasong();
						fs1.start();;
						thread.sleep(5000);
						byte d[]=tf.getText().trim().getBytes();
						try
						{
							InetAddress address=InetAddress.getByName("127.0.0.1");
							DatagramPacket data=new DatagramPacket(d,d.length,address,1234);
							DatagramSocket m=new DatagramSocket();
							m.send(data);
							String msg=new String(data.getData(),0,data.getLength());
							thread.sleep(1000);
							ta.append("已发送"+msg+"\n");
						}
					catch(Exception eee){
					}
					}
					
				}
				catch(Exception ee){
				}
		//	}
		//	else if(st=true)
	//		{
				
	//		}	
		}
		/*try
		{
			j=0;
			while(len!=0)
			{
				ta.append("已发送数据:"+shuju[j]+"\n");
				ta.append("返回:ack\n");
				j++;
				len--;
				Thread.sleep(1500);
			}
		}
		catch(Exception ex)
		{
			ex.printStackTrace();
		}*/
    }
	//public void start()
//	{
//		thread=new Thread(this);
//		thread.start();
//	}
	public void actionPerformed(ActionEvent e)
	{
		Object ar=e.getSource();
		if(ar==b1)
		{
		//	neirong=tf.getText();
		//	len=neirong.length();
		//	for(i=0;i<neirong.length();i++)
		//	{
		//		shuju[i]=neirong.substring(i,i+1);
		//	}
			byte b[]=tf.getText().trim().getBytes();
			try
			{
				InetAddress address=InetAddress.getByName("127.0.0.1");
				DatagramPacket data=new DatagramPacket(b,b.length,address,1234);
				DatagramSocket mail=new DatagramSocket();
				fasong fs=new fasong();
				fs.start();
				thread.sleep(5000);
				mail.send(data);
				String msg=new String(data.getData(),0,data.getLength());
				ta.append("已发送"+msg+"\n");
			//	thread.sleep()
			}
			catch(Exception eee){
			}
	//		this.start();
		}
		else if(ar==b2)
		{
			this.destroy();
		}	
	}
	public String ran()
    {
       double b;
       String str="ACK";
       b=Math.random();
       if(b<=0.7)
       {
       	str="ACK";
       }
       else if(b>0.7&&b<1.0)
       {
       	str="NAK";
       }
       return str;
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -