java模拟GBN实现

源代码

package com.lgf.client;

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.HeadlessException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;



/**
 * 
 * @author 11281009 李高锋
 * com.lgf.client
 * Start.java
 * 2013-11-16下午1:55:14
 */
public class ClientMainWindow extends JFrame implements ActionListener{
	/**
	 * 
	 */
	private static final long serialVersionUID = -7488994958453903490L;
	private JTextArea textArea;
	private JButton startButton;
	private JButton stopButton;

	SendThread st;
	
	public ClientMainWindow() throws HeadlessException {
		
		initUI();
		this.appendMessage("发送端启动!");
	}

	private void initUI(){
		this.setLayout(new BorderLayout());
		textArea = new JTextArea();
		textArea.setEditable(false);
		startButton = new JButton("开始");
		stopButton = new JButton("停止");
		JPanel south = new JPanel();
		south.setLayout(new GridLayout(1, 2, 5, 5));
		south.add(startButton);
		south.add(stopButton);
		startButton.addActionListener(this);
		stopButton.addActionListener(this);
		this.add(new JScrollPane(textArea), "Center");
		this.add(south, "South");
		this.setSize(600, 450);
		this.setTitle("GBN-Client");
		this.setLocationRelativeTo(null);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setVisible(true);
	}
	
	
	public void appendMessage(String message){
		SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss.SSS");
		textArea.append(sdf.format(new Date()) + " " + message + "\n");
		textArea.setCaretPosition(textArea.getDocument().getLength());
	}
	
	
	public static void main(String []args){
		new ClientMainWindow();
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		if(e.getSource() == startButton){
			st = new SendThread(this);
			st.start();
		}else if(e.getSource() == stopButton){
			if(st != null){
				st.forceStop();
			}
		}
	}

}

package com.lgf.client;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.util.ArrayList;

import javax.swing.Timer;



import com.lgf.common.C;
import com.lgf.common.Md5;
import com.lgf.common.Packet;

public class SendThread extends Thread{

	private ClientMainWindow mw;
	public static final int PACKET_AMOUNT = 15;
	public String allData[];
	private int nextSendNum = 0;
	private ArrayList<Packet> sndpkt;
	private int N = 5;
	private int base;
	private int nextSeqNum;
	
	private Socket socket;
//	private ObjectOutputStream oos = null;
//	private ObjectInputStream ois = null;
	
	private boolean forceStop;
	
	private boolean working;
	private Timer timer;
	public SendThread(ClientMainWindow mw){
		this.mw = mw;
		initAllData();
		sndpkt = new ArrayList<>();
		boolean exception = false;
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值