当前位置:首页 > 基于DV算法的路由器模拟设计与实现 - 图文
华北计算机系统工程研究所—若@只如初见
} /**
String nextHops=Arrays.toString(routerTable.getNextHop()); routerAreaLeft.setText(\
routerAreaLeft.append(\目的路由:\\n[2001, 2002, 2003, 2004, 2005, routerAreaLeft.append(\下一跳是:\\n\routerAreaLeft.append(\距离是:\\n\
2006]\\n\
* 点击发送按钮,来向destRouterId发送msgBytes数据。 * @param destRouterId 目的路由 * @param msgBytes 要发送的数据 * @return 返回是否成功的标志 */
public synchronized boolean sendData(int destRouterId,byte [] msgBytes){ */
sendSocket=new DatagramSocket();
TotalPacket totalPacket=new TotalPacket(\SendDataPacket sendDataPacket=new SendDataPacket(); sendDataPacket.setSourceRouterId(router.getRouterId()); sendDataPacket.setDestRouterId(destRouterId); sendDataPacket.setHops(16); int forwardNextHopRouterId=0;
/*****************************************************************
boolean sendDataSuccess=false; DatagramSocket sendSocket = null; ByteArrayOutputStream bos = null; ObjectOutputStream oos = null; int severReceivePort=0;
DatagramPacket datagramPacket = null; byte[] bufferOut = new byte[1024 * 1024]; try {
29
华北计算机系统工程研究所—若@只如初见
for(int i=0;i routerAreaRightSouth.append(\我最终的目的是routerAreaRightSouth.append(\我要转发这个数据包给routerAreaRightSouth.append(\要传送的数据是:\ sendDataPacket.setData(msgBytes); totalPacket.setSendDataPacket(sendDataPacket); InetAddress bos = new ByteArrayOutputStream(); oos = new ObjectOutputStream(bos); oos.writeObject(totalPacket); bufferOut = bos.toByteArray(); serverInetAddress if(i==(destRouterId-Constant.getRouterIdBasic())){ forwardNextHopRouterId=router.getRouterTable().getNextHop()[i]; \ \String(msgBytes)+\ =InetAddress.getByName(\ severReceivePort=forwardNextHopRouterId-Constant.getRouterIdBasic()+Const } sendSocket.close(); sendDataSuccess=true; } datagramPacket = new DatagramPacket(bufferOut, ant.getPortBasic()+10; bufferOut.length,serverInetAddress, severReceivePort); sendSocket.send(datagramPacket); routerAreaRightSouth.append(\转发完毕\\n\break; } catch (UnknownHostException e) { 30 华北计算机系统工程研究所—若@只如初见 } } } e.printStackTrace(); e.printStackTrace(); sendSocket.close(); } catch (IOException e) { }finally{ return sendDataSuccess; package totalThreads; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectOutputStream; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import transportPacket.RouterTablePacket; import transportPacket.TotalPacket; import entity.Constant; import entity.NetMap; import entity.Router; /** * 每一个路由器线程都有的发送线程 * @author 郭金磊 *@since 20131220 */ public class SendThread extends Thread { /** * 本路由器的路由表,里面还有RouterTable属性,即是本路由器路由表的值。s 31 华北计算机系统工程研究所—若@只如初见 */ private Router router; /** * 用于发送路由表的socket */ private DatagramSocket receiveSocket; /** *SendThread的默认构造函数 */ public SendThread() { } /** * 含有参数的构造函数 * @param receiveSocket 用于发送路由表的socket * @param router 本路由器的路由表,里面还有RouterTable属性,即是本路由器路由表的值。 */ public SendThread(DatagramSocket receiveSocket,Router router) { } /** * 开启发送线程,每隔1秒钟就发送本路由表中的信息。 */ public synchronized void run() { ByteArrayOutputStream bos = null; ObjectOutputStream oos = null; int severReceivePort=0; DatagramPacket datagramPacket = null; byte[] bufferOut = new byte[1024 * 1024]; while(true) { super(); this.receiveSocket=receiveSocket; this.router = router; super(); 32
共分享92篇相关文档