📄 receivethread.java
字号:
import java.net.*;
import java.util.*;
import java.io.*;
import java.lang.*;
import java.util.concurrent.*;
class ReceiveThread extends Thread
{
//The Router that spawned this thread
//这个程序需要知道某个路由器的邻居节点
//The port on which this thread listens for Distance Vector packets
private Router router;
private int routerId;
private HashSet<Integer> neighborPorts;
private int routerPort;
private boolean flag=false;
public ReceiveThread(Router rt)
{
super("ReceiveThread");
router=rt;
neighborPorts=rt.getNeighborPorts();
routerId=rt.getID();
routerPort=rt.getRouterPort();
//start the thread
start();
}
public int getRouterId()
{
return routerId;
}
public int getRouterPort()
{
return routerPort;
}
public HashSet<Integer> getneiborPorts()
{
return neighborPorts;
}
public void run()
{
//The socket for representing accepted connection
ServerSocket server=null;
Socket client=null;
//ObjectInputStream ois;
while(true)
{
try
{
server=new ServerSocket(this.getRouterPort());//
client=server.accept();
}
catch(Exception exp)
{
System.out.println("WWWWWWWWWWWWWWWWWWWWW");
exp.printStackTrace();
}
try
{
ObjectInputStream ois = new ObjectInputStream(client.getInputStream());
//Packets pks=(Packets)ois.readObject();
Object obj=ois.readObject();
if(obj instanceof Packets) //如果是Packets
{
Packets pks=(Packets)obj; //从包里面得到是谁发送的
router.processDV(pks);
}
else
{
DataPacket dpk=(DataPacket)obj;
Integer des=dpk.getDes();
if(router.getID()!=des.intValue())
{
System.out.println("F"+des);
router.retDataPacket(dpk);
Router.DataFlag=true;
}
else
{
System.out.println("Have received the DataPacket:"+dpk.getData());
Router.DataFlag=false;
}
}
/*
HashSet<Packet> packetstore=pks.getPackets();
Iterator itt=packetstore.iterator();
Integer whosendpks=((Packet)itt.next()).getSender();
if((Router.isTimeOut).containsKey(whosendpks))
{
(Router.isTimeOut).remove(whosendpks);
(Router.isTimeOut).put(whosendpks,new Integer(0));
}
*/
//ois.close(); //本来这里是没有注释掉的
try
{
ois.close();
server.close();
}
catch(Exception x)
{
System.out.println("KKKKKKKKKKKKKKKK");
x.printStackTrace();
}
}
catch(Exception ex)
{
System.out.print("cccccccccccccccc");
ex.printStackTrace();
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -