资源简介

使用java语言模拟GBN网络协议。包含3个应用文件,3个源文件,1个使用说明。 可以模拟丢包,包差错,正常传送等情况,并且用图形化的方式显示出来。是居家旅行之极品。

资源截图

代码片段和文件信息

package com.wuyadong.gbnreceiver;

import java.io.IOException;
import java.io.objectInputStream;
import java.io.objectOutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Date;

import javax.swing.JLabel;
import javax.swing.JTextArea;

import com.wuyadong.valueBean.Packet;


public class GBNReceiver {

//服务器
String serverIP = “127.0.0.1“;
int serverPort = 2345;

objectOutputStream outputStream = null;
objectInputStream inputStream = null;
Socket clientSocket = null;



//发送方,接受方
Sender sender;
Reciever reciever;

int expectedseqnum;
Packet sndpkt = null;

//记录器
String record = null;
private JTextArea textArea = null;
private JLabel label = null;

public void setPara(String ip)
{
this.serverIP = ip;
}

public void updateRecord()
{
this.textArea.setText(record);
this.label.setText(“expectedseqnum: “+expectedseqnum);
}


public GBNReceiver(JTextArea textAreaJLabel label)
{
this.textArea = textArea;
this.label = label;
sender = new Sender();
reciever = new Reciever();

//初始化expectedseqnumsndpkt
record = “初始化sndpktexpectedseqnum\n“;
expectedseqnum = 0;
this.updateRecord();
int checksum = sender.count_checksum(“ACK“);
sndpkt = sender.make_pkt(-1 “ACK“ checksum);

}

//建立连接,构造输入输出流
public void connect()
{
try {
clientSocket = new Socket(this.serverIPthis.serverPort);
this.outputStream = new objectOutputStream
(clientSocket.getOutputStream());
this.inputStream = new objectInputStream
(clientSocket.getInputStream());

record += “连接服务器成功\n“;
this.updateRecord();
//启动reciever类
new Thread(this.reciever).start();


} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

public void close()
{
record += “关闭连接“;

try {
this.inputStream.close();
this.outputStream.close();
this.clientSocket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

class Sender{
//目标地址,源地址
String source = “127.0.0.1“ ;
int sourceport=2345 ;
String destination = “127.0.0.1“ ;
int destinationport=2345 ;

public Packet make_pkt(int expectedSeqnumString data
int checksum)
{

//构建一个packet
Packet packet = new Packet(data
checksumsourcedestination
sourceportdestinationportexpectedSeqnum);

return packet;

}

//用哈希码进行check
int count_checksum(String data)
{
int sum = 0;
for(int i = 0;i < data.length();i ++)
sum += data.charAt(i);
return sum;
}


public void udt_send(Packet packet)
{
System.out.println(“发送packet包“);

try {
outputStream.writeobject(packet);
} catch (IOException e) {

评论

共有 条评论