[Javanetsim-cvs] javaNetSim/core/protocolsuite/tcp_ip Application.java, 1.20, 1.21 Echo.java, 1.26,
Status: Beta
Brought to you by:
darkkey
From: QweR <qw...@us...> - 2007-09-25 22:40:06
|
Update of /cvsroot/javanetsim/javaNetSim/core/protocolsuite/tcp_ip In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv31956/core/protocolsuite/tcp_ip Modified Files: Application.java Echo.java Echo_tcp.java ExternalProxyApp.java PosixTelnetClient.java SNMP.java TCP_packet.java TCP_session.java Tcp.java Telnet_client.java Telnet_server.java socketLayer.java Log Message: TCP almost works on bad lines (resending timers not killed) Index: TCP_packet.java =================================================================== RCS file: /cvsroot/javanetsim/javaNetSim/core/protocolsuite/tcp_ip/TCP_packet.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** TCP_packet.java 21 Sep 2007 22:42:31 -0000 1.4 --- TCP_packet.java 25 Sep 2007 22:34:09 -0000 1.5 *************** *** 45,49 **** * @version v0.20 */ ! public class TCP_packet extends IP_packet { /* DO NOT forget about pseudo UDP header fields --- 45,49 ---- * @version v0.20 */ ! public class TCP_packet extends IP_packet implements Comparable { /* DO NOT forget about pseudo UDP header fields *************** *** 416,419 **** --- 416,423 ---- return new TCP_packet(this); } + + public int compareTo(Object o) { + return ( sequence_number - ((TCP_packet)o).sequence_number ); + } }//EOF Index: Telnet_client.java =================================================================== RCS file: /cvsroot/javanetsim/javaNetSim/core/protocolsuite/tcp_ip/Telnet_client.java,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** Telnet_client.java 23 Sep 2007 20:24:43 -0000 1.12 --- Telnet_client.java 25 Sep 2007 22:34:09 -0000 1.13 *************** *** 49,53 **** } ! public void Accept(int listenSock, int sessionSock) throws TransportLayerException{ } --- 49,53 ---- } ! public void Accept(int listenSock, int sessionSock){ } *************** *** 172,176 **** */ ! public void SendData(String Data) throws LowLinkException, TransportLayerException, CommunicationException { --- 172,176 ---- */ ! public void SendData(int sock, String Data) throws LowLinkException, TransportLayerException, CommunicationException { *************** *** 189,193 **** * @version v0.02 */ ! public void RecvData(String Data) throws LowLinkException, TransportLayerException { //processing the protocol doings. // if(appType == 0){ --- 189,193 ---- * @version v0.02 */ ! public void RecvData(int sock, String Data) throws LowLinkException, TransportLayerException { //processing the protocol doings. // if(appType == 0){ Index: socketLayer.java =================================================================== RCS file: /cvsroot/javanetsim/javaNetSim/core/protocolsuite/tcp_ip/socketLayer.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** socketLayer.java 23 Sep 2007 22:12:23 -0000 1.6 --- socketLayer.java 25 Sep 2007 22:34:09 -0000 1.7 *************** *** 88,91 **** --- 88,92 ---- new_jnsock.dst_port = dstPort; new_jnsock.open_state = true; + new_jnsock.app.Accept(sock, new_sock); return new_sock; } *************** *** 108,112 **** if(sock < lastSock){ if(((jnSocket)sockTable.get(sock)).open_state == true){ ! ((jnSocket)sockTable.get(sock)).app.RecvData(data); } } --- 109,113 ---- if(sock < lastSock){ if(((jnSocket)sockTable.get(sock)).open_state == true){ ! ((jnSocket)sockTable.get(sock)).app.RecvData(sock, data); } } *************** *** 129,133 **** ((jnSocket)sockTable.get(sock)).app.OnConnect(sock); ! ((jnSocket)sockTable.get(sock)).app.RecvData(data); } } --- 130,134 ---- ((jnSocket)sockTable.get(sock)).app.OnConnect(sock); ! ((jnSocket)sockTable.get(sock)).app.RecvData(sock, data); } } Index: Telnet_server.java =================================================================== RCS file: /cvsroot/javanetsim/javaNetSim/core/protocolsuite/tcp_ip/Telnet_server.java,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** Telnet_server.java 23 Sep 2007 20:24:43 -0000 1.14 --- Telnet_server.java 25 Sep 2007 22:34:09 -0000 1.15 *************** *** 69,73 **** } ! public void Accept(int listenSock, int sessionSock) throws TransportLayerException{ } --- 69,73 ---- } ! public void Accept(int listenSock, int sessionSock){ } *************** *** 169,173 **** */ ! public void SendData(String Data) throws LowLinkException, TransportLayerException, CommunicationException { --- 169,173 ---- */ ! public void SendData(int sock, String Data) throws LowLinkException, TransportLayerException, CommunicationException { *************** *** 186,190 **** * @version v0.02 */ ! public void RecvData(String Data) throws LowLinkException, TransportLayerException { //processing the protocol doings. //server processing recieve --- 186,190 ---- * @version v0.02 */ ! public void RecvData(int sock, String Data) throws LowLinkException, TransportLayerException { //processing the protocol doings. //server processing recieve Index: PosixTelnetClient.java =================================================================== RCS file: /cvsroot/javanetsim/javaNetSim/core/protocolsuite/tcp_ip/PosixTelnetClient.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** PosixTelnetClient.java 23 Sep 2007 20:24:43 -0000 1.4 --- PosixTelnetClient.java 25 Sep 2007 22:34:09 -0000 1.5 *************** *** 45,49 **** } ! public void Accept(int listenSock, int sessionSock) throws TransportLayerException{ } --- 45,49 ---- } ! public void Accept(int listenSock, int sessionSock){ } *************** *** 155,159 **** */ ! public void SendData(String Data) throws LowLinkException, TransportLayerException, CommunicationException { --- 155,159 ---- */ ! public void SendData(int sock, String Data) throws LowLinkException, TransportLayerException, CommunicationException { *************** *** 172,176 **** * @version v0.02 */ ! public void RecvData(String Data) throws LowLinkException, TransportLayerException { //processing the protocol doings. --- 172,176 ---- * @version v0.02 */ ! public void RecvData(int sock, String Data) throws LowLinkException, TransportLayerException { //processing the protocol doings. Index: Tcp.java =================================================================== RCS file: /cvsroot/javanetsim/javaNetSim/core/protocolsuite/tcp_ip/Tcp.java,v retrieving revision 1.94 retrieving revision 1.95 diff -C2 -d -r1.94 -r1.95 *** Tcp.java 23 Sep 2007 22:12:23 -0000 1.94 --- Tcp.java 25 Sep 2007 22:34:09 -0000 1.95 *************** *** 44,47 **** --- 44,48 ---- import java.util.PriorityQueue; import java.util.concurrent.ConcurrentLinkedQueue; + import java.util.Vector; /** *************** *** 85,89 **** } current_time += TCP_TIMER_DELAY; ! System.out.println("Host: "+mParentStack.getHostName()+", time: " + current_time); } } --- 86,90 ---- } current_time += TCP_TIMER_DELAY; ! //System.out.println("Host: "+mParentStack.getHostName()+", time: " + current_time); } } *************** *** 133,138 **** case -1:{ //acknowledgment have not recieved, close connection // send RST segment - boolean flags[] = genFlags(RST); try{ TCP_packet rstpack = getTCPPacket_tosend(sock, "", flags, packet.get_acknowledgment_number(), packet.get_sequence_number()+1); mParentStack.sendPacket(rstpack); --- 134,139 ---- case -1:{ //acknowledgment have not recieved, close connection // send RST segment try{ + boolean flags[] = genFlags(RST); TCP_packet rstpack = getTCPPacket_tosend(sock, "", flags, packet.get_acknowledgment_number(), packet.get_sequence_number()+1); mParentStack.sendPacket(rstpack); *************** *** 214,218 **** private static final boolean USE_2MSL = false; private static final int MSL_TIME = 5000; ! /*statistic block*/ --- 215,226 ---- private static final boolean USE_2MSL = false; private static final int MSL_TIME = 5000; ! private static final int resendtimes_SYN_ACK[] = {1500,3000,6000,12000,24000,28000,-2}; ! private static final int resendtimes_SYN[] = {6000,24000,45000,-2}; ! private static final int resendtimes_DEFAULT[] = {1500,3000,6000,12000,24000,48000,64000,64000,64000,64000,64000,64000,-1}; ! private static final int resendtimes_NULL[] = {}; ! private static final int resendtimes_2MSL[] = {2*MSL_TIME,-3}; // 2MSL ! private static final int resendtimes_EXIT[] = {75000,-3}; // non-RFC exit ! private static final int resendtimes_SYNC_CLOSE[] = {75000, -3}; // synchronous closing ! /*statistic block*/ *************** *** 229,233 **** * Used in timer */ ! private static final long TCP_TIMER_DELAY = 1000; // private static final long TCP_SERVER_TIME = 1000; //msec //server closing idle connection time --- 237,241 ---- * Used in timer */ ! private static final long TCP_TIMER_DELAY = 500; // private static final long TCP_SERVER_TIME = 1000; //msec //server closing idle connection time *************** *** 264,268 **** mSL = inSL; timer=new Timer(); ! //timer.schedule(new TCPTask(),TCP_TIMER_DELAY,TCP_TIMER_DELAY); } --- 272,276 ---- mSL = inSL; timer=new Timer(); ! timer.schedule(new TCPTask(),TCP_TIMER_DELAY,TCP_TIMER_DELAY); } *************** *** 389,393 **** { //int CONNECTION_DELAY_EXAM = (int)TCP_TIMER_DELAY/4; //examination delay is 10ms, but may be any number - int resendtimes[] = {6000,24000,45000,-2}; boolean flags[] = genFlags(SYN); boolean connected = false; --- 397,400 ---- *************** *** 399,403 **** Elm.setState(Elm.SYN_SENT); ! if (sendTCPSegment(sock, "", flags, -1, resendtimes)) { connected = true; --- 406,410 ---- Elm.setState(Elm.SYN_SENT); ! if (sendTCPSegment(sock, "", flags, -1, resendtimes_SYN)) { connected = true; *************** *** 436,442 **** if(Elm != null){ Elm.setState(Elm.FIN_WAIT_1); - int resendtimes[] = {1500,3000,6000,12000,24000,48000,64000,64000,64000,64000,64000,64000,-1}; boolean flags[] = genFlags(FIN); ! sendTCPSegment(Elm.getSocket(), "", flags, -1, resendtimes); } else { --- 443,448 ---- if(Elm != null){ Elm.setState(Elm.FIN_WAIT_1); boolean flags[] = genFlags(FIN); ! sendTCPSegment(Elm.getSocket(), "", flags, -1, resendtimes_DEFAULT); } else { *************** *** 477,482 **** { boolean flags[] = genFlags(NOFLAGS); ! int resendtimes[] = {1500,3000,6000,12000,24000,48000,64000,64000,64000,64000,64000,64000,-1}; ! sendTCPSegment(sock, data, flags, -1, resendtimes); } --- 483,487 ---- { boolean flags[] = genFlags(NOFLAGS); ! sendTCPSegment(sock, data, flags, -1, resendtimes_DEFAULT); } *************** *** 507,526 **** TCP_session Elm = getSession(jnsock.genKey()); ! if(resendtimes.length > 0){ ! long tid = createTimer(sock, (TCP_packet)tosend.clone(), resendtimes); ! Elm.addSegmentToResend(tosend.get_sequence_number(),tid); ! } ! ! String pack_src = tosend.getSourceIPAddress()+":"+tosend.get_srcPort(); ! String pack_dst = tosend.getDestIPAddress()+":"+tosend.get_destPort(); ! String pack_flags = (tosend.get_ACK_flag()?"ACK,":"")+(tosend.get_SYN_flag()?"SYN,":"")+(tosend.get_FIN_flag()?"FIN,":"")+(tosend.get_RST_flag()?"RST":""); ! System.out.println("|| <<< TCP send pack: src="+pack_src+" dst="+pack_dst+" flags="+pack_flags+" seq="+tosend.get_sequence_number()+" ack="+tosend.get_acknowledgment_number()+" data='"+tosend.getTCP_message()+"'"); ! ! System.out.println("|| <<<< Host="+mParentStack.getHostName()+" IP="+mParentStack.getSrcIP()+" sock="+sock+" state="+Elm.getState()); ! ! mParentStack.sendPacket(tosend); return true; } /** * This method returns the TCP packet to send --- 512,547 ---- TCP_session Elm = getSession(jnsock.genKey()); ! Elm.addSendingSegment(tosend, resendtimes); ! trySendSegments(Elm); ! return true; } + private boolean trySendSegments(TCP_session Elm) throws TransportLayerException, LowLinkException, CommunicationException + { + boolean sended_at_last_one_packet = false; + int sock = Elm.getSocket(); + while(Elm.hasNextSendingSegment()){ + + TCP_session.TCPPacketTimesPair sendpair = Elm.getNextSendingSegment(); + TCP_packet tosend = sendpair.packet; + if(sendpair.resendtimes.length > 0){ + long tid = createTimer(sock, (TCP_packet)tosend.clone(), sendpair.resendtimes); + Elm.addSegmentToResend(tosend.get_sequence_number(),tid); + } + + String pack_src = tosend.getSourceIPAddress()+":"+tosend.get_srcPort(); + String pack_dst = tosend.getDestIPAddress()+":"+tosend.get_destPort(); + String pack_flags = (tosend.get_ACK_flag()?"ACK,":"")+(tosend.get_SYN_flag()?"SYN,":"")+(tosend.get_FIN_flag()?"FIN,":"")+(tosend.get_RST_flag()?"RST":""); + System.out.println("|| <<< TCP send pack: src="+pack_src+" dst="+pack_dst+" flags="+pack_flags+" seq="+tosend.get_sequence_number()+" ack="+tosend.get_acknowledgment_number()+" data='"+tosend.getTCP_message()+"'"); + + System.out.println("|| <<<< Host="+mParentStack.getHostName()+" IP="+mParentStack.getSrcIP()+" sock="+sock+" state="+Elm.getState()); + + mParentStack.sendPacket(tosend); + sended_at_last_one_packet = true; + } + return sended_at_last_one_packet; + } + /** * This method returns the TCP packet to send *************** *** 629,633 **** Elm = addSession(jnSocket.genTCPkey(inPacket.get_destPort(), inPacket.getSourceIPAddress(), inPacket.get_srcPort()), sock); Elm.setState(Elm.LISTEN); - jnsock.app.Accept(listensock, sock); } } --- 650,653 ---- *************** *** 635,643 **** { //int sock = Elm.getSocket(); ! if(inPacket.get_acknowledgment_number() >= Elm.getLastACK()){ if(inPacket.get_ACK_flag() && inPacket.get_acknowledgment_number() > Elm.getLastACK()){ removeTimer(Elm.getSegmentToResend(inPacket.get_acknowledgment_number()-1)); Elm.removeSegmentToResend(inPacket.get_acknowledgment_number()-1); Elm.setLastACK(inPacket.get_acknowledgment_number()); } if(inPacket.get_RST_flag() && !(inPacket.get_ACK_flag() || inPacket.get_SYN_flag() || inPacket.get_FIN_flag())){ // add chech flags ONLY RST --- 655,664 ---- { //int sock = Elm.getSocket(); ! if(!inPacket.get_ACK_flag() || inPacket.get_acknowledgment_number() > Elm.getLastACK() || inPacket.get_SYN_flag() || inPacket.get_FIN_flag()){ if(inPacket.get_ACK_flag() && inPacket.get_acknowledgment_number() > Elm.getLastACK()){ removeTimer(Elm.getSegmentToResend(inPacket.get_acknowledgment_number()-1)); Elm.removeSegmentToResend(inPacket.get_acknowledgment_number()-1); Elm.setLastACK(inPacket.get_acknowledgment_number()); + trySendSegments(Elm); } if(inPacket.get_RST_flag() && !(inPacket.get_ACK_flag() || inPacket.get_SYN_flag() || inPacket.get_FIN_flag())){ // add chech flags ONLY RST *************** *** 647,651 **** else{ System.out.println("|| >>>> Host="+mParentStack.getHostName()+" IP="+mParentStack.getSrcIP()+" sock="+Elm.getSocket()+" state="+Elm.getState()); ! printLayerInfo("TCP packet received from "+ inPacket.getSourceIPAddress() + ":" + inPacket.get_srcPort() + " message: \"" +inPacket.getTCP_message() + "\"."); switch(Elm.getState()){ --- 668,672 ---- else{ System.out.println("|| >>>> Host="+mParentStack.getHostName()+" IP="+mParentStack.getSrcIP()+" sock="+Elm.getSocket()+" state="+Elm.getState()); ! printLayerInfo("TCP packet received from "+ pack_src +" flags: "+pack_flags+" message: \"" +inPacket.getTCP_message() + "\"."); switch(Elm.getState()){ *************** *** 669,673 **** else { //throw new TransportLayerPortException("UDP Error: port " + inPacket.get_destPort() + " does not exist. Host \"" + mParentStack.getParentNodeName()+"\"."); ! //send RST throw new TransportLayerPortException("TCP Error: no application binded port "+inPacket.get_destPort() +" on host \""+ mParentStack.getParentNodeName()+"\"!"); } --- 690,702 ---- else { //throw new TransportLayerPortException("UDP Error: port " + inPacket.get_destPort() + " does not exist. Host \"" + mParentStack.getParentNodeName()+"\"."); ! // send RST segment ! // boolean flags[] = genFlags(RST); ! // TCP_packet rstpack = new TCP_packet(inPacket.getDestIPAddress(), inPacket.getSourceIPAddress(), inPacket.get_destPort(), inPacket.get_srcPort()); ! // rstpack.set_RST_flag(true); ! // rstpack.set_sequence_number(0); ! // rstpack.set_acknowledgment_number(inPacket.get_sequence_number()+1); ! // rstpack.setTCP_message(""); ! // mParentStack.sendPacket(rstpack); ! throw new TransportLayerPortException("TCP Error: no application binded port "+inPacket.get_destPort() +" on host \""+ mParentStack.getParentNodeName()+"\"!"); } *************** *** 688,694 **** if(inPacket.get_SYN_flag()){ Elm.setState(Elm.SYN_RCVD); - int resendtimes[] = {1500,3000,6000,12000,24000,48000,64000,64000,64000,64000,64000,64000,-1}; boolean flags[] = genFlags(ACK | SYN); ! sendTCPSegment(Elm.getSocket(), "", flags, inPacket.get_sequence_number()+1, resendtimes); } else --- 717,722 ---- if(inPacket.get_SYN_flag()){ Elm.setState(Elm.SYN_RCVD); boolean flags[] = genFlags(ACK | SYN); ! sendTCPSegment(Elm.getSocket(), "", flags, inPacket.get_sequence_number()+1, resendtimes_SYN_ACK); } else *************** *** 700,706 **** if(inPacket.get_SYN_flag() && inPacket.get_ACK_flag()){ Elm.setState(Elm.ESTABLISHED); - int resendtimes[] = {}; boolean flags[] = genFlags(ACK); ! sendTCPSegment(Elm.getSocket(), "", flags, inPacket.get_sequence_number()+1, resendtimes); //mSL.get_socket(Elm.getSocket()).app.OnConnect(Elm.getSocket()); jnSocket jns = mSL.get_socket(Elm.getSocket()); --- 728,733 ---- if(inPacket.get_SYN_flag() && inPacket.get_ACK_flag()){ Elm.setState(Elm.ESTABLISHED); boolean flags[] = genFlags(ACK); ! sendTCPSegment(Elm.getSocket(), "", flags, inPacket.get_sequence_number()+1, resendtimes_NULL); //mSL.get_socket(Elm.getSocket()).app.OnConnect(Elm.getSocket()); jnSocket jns = mSL.get_socket(Elm.getSocket()); *************** *** 713,720 **** private void recv_SYN_RCVD(TCP_session Elm, TCP_packet inPacket) throws TransportLayerPortException, TransportLayerException, LowLinkException, CommunicationException { ! if(inPacket.get_ACK_flag()){ Elm.setState(Elm.ESTABLISHED); mSL.get_socket(Elm.getSocket()).app.OnConnect(Elm.getSocket()); } else throw new TransportLayerException("TCP: recv_SYN_RCVD: unexpected packet"); --- 740,750 ---- private void recv_SYN_RCVD(TCP_session Elm, TCP_packet inPacket) throws TransportLayerPortException, TransportLayerException, LowLinkException, CommunicationException { ! if(inPacket.get_ACK_flag() && !(inPacket.get_FIN_flag() || inPacket.get_SYN_flag())){ Elm.setState(Elm.ESTABLISHED); mSL.get_socket(Elm.getSocket()).app.OnConnect(Elm.getSocket()); } + else if(inPacket.get_SYN_flag() && !(inPacket.get_ACK_flag() || inPacket.get_FIN_flag())){ + //do nothing, resending works :) + } else throw new TransportLayerException("TCP: recv_SYN_RCVD: unexpected packet"); *************** *** 723,739 **** private void recv_ESTABLISHED(TCP_session Elm, TCP_packet inPacket) throws TransportLayerPortException, TransportLayerException, LowLinkException, CommunicationException { ! if(inPacket.get_FIN_flag()){ Elm.setState(Elm.CLOSE_WAIT); - int resendtimes1[] = {}; boolean flags[] = genFlags(ACK); ! sendTCPSegment(Elm.getSocket(), "", flags, inPacket.get_sequence_number()+1, resendtimes1); Elm.setState(Elm.LAST_ACK); - int resendtimes2[] = {1500,3000,6000,12000,24000,48000,64000,64000,64000,64000,64000,64000,-1}; //to resend or not to resend ? flags = genFlags(FIN); ! sendTCPSegment(Elm.getSocket(), "", flags, inPacket.get_sequence_number()+1, resendtimes2); } else if(!(inPacket.get_ACK_flag() || inPacket.get_SYN_flag() || inPacket.get_FIN_flag())){ ! //normal data processing } else --- 753,771 ---- private void recv_ESTABLISHED(TCP_session Elm, TCP_packet inPacket) throws TransportLayerPortException, TransportLayerException, LowLinkException, CommunicationException { ! if(inPacket.get_FIN_flag() && !inPacket.get_ACK_flag()){ Elm.setState(Elm.CLOSE_WAIT); boolean flags[] = genFlags(ACK); ! sendTCPSegment(Elm.getSocket(), "", flags, inPacket.get_sequence_number()+1, resendtimes_NULL); Elm.setState(Elm.LAST_ACK); flags = genFlags(FIN); ! sendTCPSegment(Elm.getSocket(), "", flags, inPacket.get_sequence_number()+1, resendtimes_DEFAULT); ! } ! else if(inPacket.get_ACK_flag()){ ! //do nothing, segment have been already processed ! int i = 0; } else if(!(inPacket.get_ACK_flag() || inPacket.get_SYN_flag() || inPacket.get_FIN_flag())){ ! processSegment(Elm, inPacket); } else *************** *** 756,762 **** } else if(inPacket.get_FIN_flag()){ - int resendtimes[] = {}; boolean flags[] = genFlags(ACK); ! sendTCPSegment(Elm.getSocket(), "", flags, inPacket.get_sequence_number()+1, resendtimes); } else --- 788,793 ---- } else if(inPacket.get_FIN_flag()){ boolean flags[] = genFlags(ACK); ! sendTCPSegment(Elm.getSocket(), "", flags, inPacket.get_sequence_number()+1, resendtimes_NULL); } else *************** *** 768,777 **** if(inPacket.get_ACK_flag() && inPacket.get_FIN_flag()){ Elm.setState(Elm.TIME_WAIT); - int resendtimes[] = {}; boolean flags[] = genFlags(ACK); ! sendTCPSegment(Elm.getSocket(), "", flags, inPacket.get_sequence_number()+1, resendtimes); if(USE_2MSL){ ! int resendtimes2[] = {2*MSL_TIME,-3}; // 2MSL ! Elm.last_timer = createTimer(Elm.getSocket(), null, resendtimes2); } else{ --- 799,806 ---- if(inPacket.get_ACK_flag() && inPacket.get_FIN_flag()){ Elm.setState(Elm.TIME_WAIT); boolean flags[] = genFlags(ACK); ! sendTCPSegment(Elm.getSocket(), "", flags, inPacket.get_sequence_number()+1, resendtimes_NULL); if(USE_2MSL){ ! Elm.last_timer = createTimer(Elm.getSocket(), null, resendtimes_2MSL); } else{ *************** *** 782,798 **** else if(inPacket.get_ACK_flag()){ Elm.setState(Elm.FIN_WAIT_2); ! int resendtimes[] = {75000,-3}; // non-RFC exit ! Elm.last_timer = createTimer(Elm.getSocket(), null, resendtimes); } else if(inPacket.get_FIN_flag()){ Elm.setState(Elm.CLOSING); - int resendtimes[] = {}; boolean flags[] = genFlags(ACK); ! sendTCPSegment(Elm.getSocket(), "", flags, inPacket.get_sequence_number()+1, resendtimes); ! int resendtimes2[] = {75000, -3}; // synchronous closing ! Elm.last_timer = createTimer(Elm.getSocket(), null, resendtimes2); } else if(!(inPacket.get_ACK_flag() || inPacket.get_SYN_flag() || inPacket.get_FIN_flag())){ ! //normal data processing } else --- 811,824 ---- else if(inPacket.get_ACK_flag()){ Elm.setState(Elm.FIN_WAIT_2); ! Elm.last_timer = createTimer(Elm.getSocket(), null, resendtimes_EXIT); } else if(inPacket.get_FIN_flag()){ Elm.setState(Elm.CLOSING); boolean flags[] = genFlags(ACK); ! sendTCPSegment(Elm.getSocket(), "", flags, inPacket.get_sequence_number()+1, resendtimes_NULL); ! Elm.last_timer = createTimer(Elm.getSocket(), null, resendtimes_SYNC_CLOSE); } else if(!(inPacket.get_ACK_flag() || inPacket.get_SYN_flag() || inPacket.get_FIN_flag())){ ! processSegment(Elm, inPacket); } else *************** *** 804,814 **** if(inPacket.get_FIN_flag()){ Elm.setState(Elm.TIME_WAIT); - int resendtimes[] = {}; boolean flags[] = genFlags(ACK); ! sendTCPSegment(Elm.getSocket(), "", flags, inPacket.get_sequence_number()+1, resendtimes); removeTimer(Elm.last_timer); if(USE_2MSL){ ! int resendtimes2[] = {2*MSL_TIME, -3}; // 2MSL ! Elm.last_timer = createTimer(Elm.getSocket(), null, resendtimes2); } else{ --- 830,838 ---- if(inPacket.get_FIN_flag()){ Elm.setState(Elm.TIME_WAIT); boolean flags[] = genFlags(ACK); ! sendTCPSegment(Elm.getSocket(), "", flags, inPacket.get_sequence_number()+1, resendtimes_NULL); removeTimer(Elm.last_timer); if(USE_2MSL){ ! Elm.last_timer = createTimer(Elm.getSocket(), null, resendtimes_2MSL); } else{ *************** *** 818,822 **** } else if(!(inPacket.get_ACK_flag() || inPacket.get_SYN_flag() || inPacket.get_FIN_flag())){ ! //normal data processing } else --- 842,846 ---- } else if(!(inPacket.get_ACK_flag() || inPacket.get_SYN_flag() || inPacket.get_FIN_flag())){ ! processSegment(Elm, inPacket); } else *************** *** 830,835 **** removeTimer(Elm.last_timer); if(USE_2MSL){ ! int resendtimes2[] = {2*MSL_TIME, -3}; // 2MSL ! Elm.last_timer = createTimer(Elm.getSocket(), null, resendtimes2); } else{ --- 854,858 ---- removeTimer(Elm.last_timer); if(USE_2MSL){ ! Elm.last_timer = createTimer(Elm.getSocket(), null, resendtimes_2MSL); } else{ *************** *** 844,863 **** private void recv_TIME_WAIT(TCP_session Elm, TCP_packet inPacket) throws TransportLayerPortException, TransportLayerException, LowLinkException, CommunicationException { ! if(false){ ! } ! else ! throw new TransportLayerException("TCP: recv_TIME_WAIT: unexpected packet"); } ! private void passUpstairs(TCP_session Elm, String data){ ! } - - - - - - private long createTimer(int sock, TCP_packet pack, int times[]){ Resender rsnd = new Resender(sock,pack,times); --- 867,890 ---- private void recv_TIME_WAIT(TCP_session Elm, TCP_packet inPacket) throws TransportLayerPortException, TransportLayerException, LowLinkException, CommunicationException { ! throw new TransportLayerException("TCP: recv_TIME_WAIT: unexpected packet"); } ! private void processSegment(TCP_session Elm, TCP_packet packet) throws LowLinkException, TransportLayerException, CommunicationException ! { ! Elm.addReceivedSegment(packet); ! String out = ""; ! int readySegments = 0; ! while(Elm.hasNextReceivedSegment()){ ! TCP_packet tcpp = Elm.getNextReceivedSegment(); ! out += tcpp.getTCP_message(); ! readySegments = tcpp.get_sequence_number(); ! } ! if(readySegments>0){ ! boolean flags[] = genFlags(ACK); ! sendTCPSegment(Elm.getSocket(), "", flags, readySegments+1, resendtimes_NULL); ! mSL.recv(Elm.getSocket(), out); ! } } private long createTimer(int sock, TCP_packet pack, int times[]){ Resender rsnd = new Resender(sock,pack,times); *************** *** 1089,1182 **** Simulation.addLayerInfo(protInfo); } ! ! ! ! ! ! ! ! ! /** ! ****************************************************************** ! * ! * Below code was created by gift and not checked yet ! * ! ****************************************************************** ! **/ ! ! ! // ! // /** ! // * This method sends to application all consequent segments from OutputBuffer ! // * @author gift (sourceforge.net user) ! // * @param listener target application ! // * @param Elm TCP_Hashtable contains necessary info ! // * @return Nothing. ! // * @exception LowLinkException ! // * @exception TransportLayerException ! // * @version v0.20 ! // * @see LowLinkException ! // * @see TransportLayerException ! // */ ! // private void PassUpstairs(Application listener, TCP_HashTableElement Elm) throws LowLinkException, TransportLayerException { ! // Integer kkey=Elm.last_passed+1;//=new Integer(Elm.last_passed+1); ! // ! //// System.out.println(" [*** TCP ***] Pass upstairs call."); ! //// System.out.println(" [*** TCP ***] Last passed: " + Elm.last_passed + ", going to pass: " + kkey + "."); ! //// ! //// System.out.println(" [*** TCP ***] Buffer isEmpty: " + Elm.OutputBuffer.isEmpty() + "."); ! //// System.out.println(" [*** TCP ***] While condition: " + Elm.OutputBuffer.containsKey(kkey) + "."); ! //// ! // while(Elm.OutputBuffer.containsKey(kkey)) { ! // Elm.last_passed=kkey; ! // TCP_packet Packet=(TCP_packet) Elm.OutputBuffer.remove(kkey); ! // kkey++; ! // ! // if((!Packet.get_ACK_flag()) && (!Packet.get_SYN_flag()) && (!Packet.get_FIN_flag())) ! // { ! // //if(!Packet.get_ACK_flag()) ! // listener.RecvData(Packet.getTCP_message()); ! // // System.out.println(" [*** TCP ***] [*P*] Passed packet SEQ: " + Packet.get_sequence_number() + ", packet destination: " + Packet.getDestIPAddress() + "."); ! // } else ! // { ! // // System.out.println(" [*** TCP ***] [S] Skipped packet SEQ: " + Packet.get_sequence_number() + ", packet destination: " + Packet.getDestIPAddress() + "."); ! // } ! // } ! // ! //// System.out.println(" [*** TCP ***] Pass upstairs end of call."); ! // } ! // ! // /** ! // * This adds segment to OutputBuffer ! // * @author gift (sourceforge.net user) ! // * @param Elm TCP_Hashtable contains necessary info ! // * @param Packet TCP_packet which clone has to be stored in OutputBuffer ! // * @return Nothing. ! // * @exception TransportLayerException ! // * @version v0.20 ! // * @see TransportLayerException ! // */ ! // private void AddOutputBuffer(TCP_HashTableElement Elm, TCP_packet Packet) throws TransportLayerException { ! // if (Elm.OutputBuffer.size()==2000) { ! // throw new TransportLayerException("TCP Error: maximum buffer size reached! Can not keep on receiving TCP segments. Bad connection to: " + Elm.connectedtoIP + ":" + Elm.connectedtoPort + "."); ! // } else { ! // TCP_packet to_buff=new TCP_packet(Packet.getDestIPAddress(), Packet.getSourceIPAddress(), Packet.get_destPort(), Packet.get_srcPort()); ! // try { ! // to_buff.setTCP_message(Packet.getTCP_message()); ! // } catch(TransportLayerException e) {} //will never be thrown from here ;) ! // ! // to_buff.set_sequence_number(Packet.get_sequence_number()); ! // to_buff.set_acknowledgment_number(Packet.get_acknowledgment_number()); ! // ! // to_buff.set_URG_flag(Packet.get_URG_flag()); ! // to_buff.set_ACK_flag(Packet.get_ACK_flag()); ! // to_buff.set_PSH_flag(Packet.get_PSH_flag()); ! // to_buff.set_RST_flag(Packet.get_RST_flag()); ! // to_buff.set_SYN_flag(Packet.get_SYN_flag()); ! // to_buff.set_FIN_flag(Packet.get_FIN_flag()); ! // ! // Elm.OutputBuffer.put(new Integer(Packet.get_sequence_number()), to_buff); ! // } ! // } ! // ! } //EOF --- 1116,1118 ---- Simulation.addLayerInfo(protInfo); } ! } Index: Echo_tcp.java =================================================================== RCS file: /cvsroot/javanetsim/javaNetSim/core/protocolsuite/tcp_ip/Echo_tcp.java,v retrieving revision 1.35 retrieving revision 1.36 diff -C2 -d -r1.35 -r1.36 *** Echo_tcp.java 23 Sep 2007 22:12:23 -0000 1.35 --- Echo_tcp.java 25 Sep 2007 22:34:09 -0000 1.36 *************** *** 31,35 **** public int recieved; - private int sock; private Vector<Integer> connections = new Vector<Integer>(0); --- 31,34 ---- *************** *** 38,42 **** super(inParentStack, listenPort, appType, UID); counts = 0; ! sock = mParentStack.SL().socket(jnSocket.TCP_socket, this); } --- 37,41 ---- super(inParentStack, listenPort, appType, UID); counts = 0; ! appSock = mParentStack.SL().socket(jnSocket.TCP_socket, this); } *************** *** 51,56 **** try{ if(appType == 1){ ! mParentStack.SL().bind(sock, mParentStack.getSrcIP(), listenPort); ! mParentStack.SL().listen(sock); } }catch (TransportLayerException e){ --- 50,55 ---- try{ if(appType == 1){ ! mParentStack.SL().bind(appSock, mParentStack.getSrcIP(), listenPort); ! mParentStack.SL().listen(appSock); } }catch (TransportLayerException e){ *************** *** 59,63 **** } ! public void Accept(int listenSock, int sessionSock) throws TransportLayerException{ connections.add(new Integer(sessionSock)); System.out.println("Accepted socket="+sessionSock+" for listen socket="+listenSock); --- 58,62 ---- } ! public void Accept(int listenSock, int sessionSock){ connections.add(new Integer(sessionSock)); System.out.println("Accepted socket="+sessionSock+" for listen socket="+listenSock); *************** *** 73,77 **** public void Close() throws TransportLayerException { ! mParentStack.SL().close(sock); for(int i=0; i<connections.size(); i++){ mParentStack.SL().close(connections.get(i).intValue()); --- 72,76 ---- public void Close() throws TransportLayerException { ! mParentStack.SL().close(appSock); for(int i=0; i<connections.size(); i++){ mParentStack.SL().close(connections.get(i).intValue()); *************** *** 82,86 **** public void Free() throws TransportLayerException{ Close(); ! mParentStack.SL().free(sock); for(int i=0; i<connections.size(); i++){ mParentStack.SL().free(connections.get(i).intValue()); --- 81,85 ---- public void Free() throws TransportLayerException{ Close(); ! mParentStack.SL().free(appSock); for(int i=0; i<connections.size(); i++){ mParentStack.SL().free(connections.get(i).intValue()); *************** *** 101,105 **** printLayerInfo("Connecting to host " + Host + ":"+ port +". Please wait..."); ! boolean isconnected = mParentStack.SL().connect(sock, Host, port); return isconnected; --- 100,104 ---- printLayerInfo("Connecting to host " + Host + ":"+ port +". Please wait..."); ! boolean isconnected = mParentStack.SL().connect(appSock, Host, port); return isconnected; *************** *** 118,123 **** printLayerInfo("Start sending echo message '" + data + "' to " + mParentStack.SL().get_socket(sock).dst_IP + ":" + mParentStack.SL().get_socket(sock).dst_port); this.counts--; ! //SendData(Data); ! mParentStack.TCP().disconnect(sock); } }catch(LowLinkException e){ --- 117,122 ---- printLayerInfo("Start sending echo message '" + data + "' to " + mParentStack.SL().get_socket(sock).dst_IP + ":" + mParentStack.SL().get_socket(sock).dst_port); this.counts--; ! SendData(data); ! //mParentStack.TCP().disconnect(sock); } }catch(LowLinkException e){ *************** *** 138,141 **** --- 137,141 ---- public void OnDisconnect(int sock) { System.out.println("ECHO_TCP: Disconnected "+sock+" !"); + printLayerInfo("Disconnected"); try{ if(appType == 1){ *************** *** 169,173 **** */ ! public void SendData(String Data) throws LowLinkException, TransportLayerException, CommunicationException { mParentStack.SL().write(sock, Data); --- 169,173 ---- */ ! public void SendData(int sock, String Data) throws LowLinkException, TransportLayerException, CommunicationException { mParentStack.SL().write(sock, Data); *************** *** 184,188 **** * @version v0.02 */ ! public void RecvData(String Data) throws LowLinkException, TransportLayerException { //processing the protocol doings. recieved++; --- 184,188 ---- * @version v0.02 */ ! public void RecvData(int sock, String Data) throws LowLinkException, TransportLayerException { //processing the protocol doings. recieved++; *************** *** 201,204 **** --- 201,209 ---- if(this.counts==0){ printLayerInfo("Connection time: " + (long)(System.currentTimeMillis () - utc1) + " ms. Total recieved messages: " + recieved + "."); + try{ + mParentStack.TCP().disconnect(sock); + }catch(CommunicationException e){ + System.out.println(e.toString()); + } }else{ this.counts--; *************** *** 206,212 **** printLayerInfo("Sending echo message '" + Data + "' to server..."); SendData(Data); ! }catch(Exception e){ ! Error.Report(e); ! ///*TODO*: here to catch } } --- 211,220 ---- printLayerInfo("Sending echo message '" + Data + "' to server..."); SendData(Data); ! }catch(LowLinkException e){ ! System.out.println(e.toString()); ! }catch(TransportLayerException e){ ! System.out.println(e.toString()); ! }catch(CommunicationException e){ ! System.out.println(e.toString()); } } *************** *** 220,224 **** try { ! SendData(Data); }catch(CommunicationException e){ System.out.println(e.toString()); --- 228,232 ---- try { ! SendData(sock, Data); }catch(CommunicationException e){ System.out.println(e.toString()); *************** *** 239,249 **** public void SendEcho(String Data, String Host, int port, int counts) throws CommunicationException, LowLinkException, InvalidNetworkLayerDeviceException, TransportLayerException{ recieved = 0; - - utc1 = System.currentTimeMillis (); if (Connect(Host, port)){ - this.counts = counts; - this.data = Data; } else{ --- 247,255 ---- public void SendEcho(String Data, String Host, int port, int counts) throws CommunicationException, LowLinkException, InvalidNetworkLayerDeviceException, TransportLayerException{ recieved = 0; utc1 = System.currentTimeMillis (); + this.counts = counts; + this.data = Data; if (Connect(Host, port)){ } else{ Index: Application.java =================================================================== RCS file: /cvsroot/javanetsim/javaNetSim/core/protocolsuite/tcp_ip/Application.java,v retrieving revision 1.20 retrieving revision 1.21 diff -C2 -d -r1.20 -r1.21 *** Application.java 23 Sep 2007 20:24:43 -0000 1.20 --- Application.java 25 Sep 2007 22:34:09 -0000 1.21 *************** *** 27,30 **** --- 27,31 ---- protected int sdPort; protected int appType; + protected int appSock; protected int UID; *************** *** 46,50 **** public abstract void Listen() throws TransportLayerException; ! public abstract void Accept(int listenSock, int sessionSock) throws TransportLayerException; /** --- 47,51 ---- public abstract void Listen() throws TransportLayerException; ! public abstract void Accept(int listenSock, int sessionSock); /** *************** *** 88,92 **** */ ! public abstract void SendData(String Data) throws LowLinkException, TransportLayerException, CommunicationException; /** --- 89,99 ---- */ ! public abstract void SendData(int sock, String Data) throws LowLinkException, TransportLayerException, CommunicationException; ! ! ! public void SendData(String Data) throws LowLinkException, TransportLayerException, CommunicationException ! { ! SendData(appSock, Data); ! } /** *************** *** 96,100 **** * @version v0.01 */ ! public abstract void RecvData(String Data) throws LowLinkException, TransportLayerException; --- 103,107 ---- * @version v0.01 */ ! public abstract void RecvData(int sock, String Data) throws LowLinkException, TransportLayerException; Index: TCP_session.java =================================================================== RCS file: /cvsroot/javanetsim/javaNetSim/core/protocolsuite/tcp_ip/TCP_session.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** TCP_session.java 23 Sep 2007 22:12:23 -0000 1.6 --- TCP_session.java 25 Sep 2007 22:34:09 -0000 1.7 *************** *** 11,14 **** --- 11,16 ---- import java.util.Hashtable; + import java.util.PriorityQueue; + import java.util.Iterator; /** *************** *** 18,21 **** --- 20,39 ---- public class TCP_session extends jnSession{ + public class TCPPacketTimesPair implements Comparable{ + public TCP_packet packet; + public int resendtimes[]; + + public TCPPacketTimesPair(TCP_packet pack, int times[]){ + packet = pack; + resendtimes = new int[times.length]; + for(int i=0; i<times.length; i++) + resendtimes[i] = times[i]; + } + + public int compareTo(Object o){ + return packet.compareTo(((TCPPacketTimesPair)o).packet); + } + } + private int window_size=10; //2000; //25 *************** *** 28,32 **** /*end of statistic block*/ ! public int seq_number=0; private int last_ack_number=0; //last sequence number value of the segment that has been passed upstairs private int state = CLOSED; --- 46,51 ---- /*end of statistic block*/ ! public int seq_number = 0; ! private int next_pass_seq_num = -1; private int last_ack_number=0; //last sequence number value of the segment that has been passed upstairs private int state = CLOSED; *************** *** 53,56 **** --- 72,79 ---- private Hashtable segmentsToResend = new Hashtable(); + private PriorityQueue receivedSegments = new PriorityQueue(); + + private PriorityQueue sendingSegments = new PriorityQueue(); + /** *************** *** 148,151 **** --- 171,244 ---- } + /** + * Pop expected segment from buffer + * @result null if expected segment have not received yet + */ + public TCP_packet getNextReceivedSegment(){ + TCP_packet result = null; + if(!receivedSegments.isEmpty() && ((TCP_packet)receivedSegments.peek()).get_sequence_number() == next_pass_seq_num){ + result = (TCP_packet)receivedSegments.poll(); + next_pass_seq_num++; + } + return result; + } + + public boolean hasNextReceivedSegment(){ + boolean result = false; + if(!receivedSegments.isEmpty() && ((TCP_packet)receivedSegments.peek()).get_sequence_number() == next_pass_seq_num){ + result = true; + } + return result; + } + + /** + * + * @result true if segment have been added in buffer, false if segment have been already contained in buffer + */ + public boolean addReceivedSegment(TCP_packet pack){ + boolean Found = false; + if(pack.get_sequence_number() >= next_pass_seq_num){ + Iterator<TCP_packet> it = receivedSegments.iterator(); + while(it.hasNext() && !Found){ + TCP_packet p = it.next(); + Found = p.get_sequence_number() == pack.get_sequence_number(); + } + if(!Found){ + receivedSegments.add(pack); + if(next_pass_seq_num == -1) next_pass_seq_num = pack.get_sequence_number(); + } + } + return !Found; + } + + /** + * Pop expected segment from buffer + * @result null if expected segment have not received yet + */ + public TCPPacketTimesPair getNextSendingSegment(){ + TCPPacketTimesPair result = null; + if(!sendingSegments.isEmpty() && ((TCPPacketTimesPair)sendingSegments.peek()).packet.get_sequence_number() < getLastACK()+getWindowSize()){ + result = (TCPPacketTimesPair)sendingSegments.poll(); + } + return result; + } + + public boolean hasNextSendingSegment(){ + boolean result = false; + if(!sendingSegments.isEmpty() && ((TCPPacketTimesPair)sendingSegments.peek()).packet.get_sequence_number() < getLastACK()+getWindowSize()){ + result = true; + } + return result; + } + + /** + * + * @result true if segment have been added in buffer, false if segment have been already contained in buffer + */ + public boolean addSendingSegment(TCP_packet pack, int resendtimes[]){ + sendingSegments.add(new TCPPacketTimesPair(pack, resendtimes)); + return true; + } + public int getState(){ return state; *************** *** 168,171 **** --- 261,272 ---- } + public int getWindowSize(){ + return window_size; + } + + public void setWindowSize(int windowSize){ + window_size = windowSize>0 ? windowSize : 0; + } + public void inc_received_segments(){ received_segments++; Index: Echo.java =================================================================== RCS file: /cvsroot/javanetsim/javaNetSim/core/protocolsuite/tcp_ip/Echo.java,v retrieving revision 1.26 retrieving revision 1.27 diff -C2 -d -r1.26 -r1.27 *** Echo.java 23 Sep 2007 20:24:43 -0000 1.26 --- Echo.java 25 Sep 2007 22:34:09 -0000 1.27 *************** *** 30,39 **** long utc1; public int recieved; - int sock; /** Creates a new instance of Echo */ public Echo(ProtocolStack inParentStack, int listenPort, int appType, int UID) { super(inParentStack, listenPort, appType, UID); ! sock = mParentStack.SL().socket(jnSocket.UDP_socket, this); int fake = 0; } --- 30,38 ---- long utc1; public int recieved; /** Creates a new instance of Echo */ public Echo(ProtocolStack inParentStack, int listenPort, int appType, int UID) { super(inParentStack, listenPort, appType, UID); ! appSock = mParentStack.SL().socket(jnSocket.UDP_socket, this); int fake = 0; } *************** *** 47,51 **** // try{ ! mParentStack.SL().bind(sock, mParentStack.getSrcIP(), listenPort); printLayerInfo("Echo app", "Echo server starts listening in port " + listenPort + "."); } catch (Exception e) --- 46,50 ---- // try{ ! mParentStack.SL().bind(appSock, mParentStack.getSrcIP(), listenPort); printLayerInfo("Echo app", "Echo server starts listening in port " + listenPort + "."); } catch (Exception e) *************** *** 57,61 **** ! public void Accept(int listenSock, int sessionSock) throws TransportLayerException{ } --- 56,60 ---- ! public void Accept(int listenSock, int sessionSock){ } *************** *** 71,75 **** { printLayerInfo("Echo app", "Echo app closed socket."); ! mParentStack.SL().close(sock); } --- 70,74 ---- { printLayerInfo("Echo app", "Echo app closed socket."); ! mParentStack.SL().close(appSock); } *************** *** 77,81 **** { printLayerInfo("Echo app", "Echo app freed socket."); ! mParentStack.SL().free(sock); } --- 76,80 ---- { printLayerInfo("Echo app", "Echo app freed socket."); ! mParentStack.SL().free(appSock); } *************** *** 129,133 **** */ ! public void SendData(String Data) throws LowLinkException, TransportLayerException, CommunicationException { mParentStack.SL().writeTo(sock, Data, sdHost, sdPort); --- 128,132 ---- */ ! public void SendData(int sock, String Data) throws LowLinkException, TransportLayerException, CommunicationException { mParentStack.SL().writeTo(sock, Data, sdHost, sdPort); *************** *** 144,148 **** * @version v0.01 */ ! public void RecvData(String Data) throws LowLinkException, TransportLayerException { recieved++; //processing the protocol doings. --- 143,147 ---- * @version v0.01 */ ! public void RecvData(int sock, String Data) throws LowLinkException, TransportLayerException { recieved++; //processing the protocol doings. Index: ExternalProxyApp.java =================================================================== RCS file: /cvsroot/javanetsim/javaNetSim/core/protocolsuite/tcp_ip/ExternalProxyApp.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** ExternalProxyApp.java 23 Sep 2007 20:24:43 -0000 1.4 --- ExternalProxyApp.java 25 Sep 2007 22:34:09 -0000 1.5 *************** *** 88,92 **** } ! public void Accept(int listenSock, int sessionSock) throws TransportLayerException{ } --- 88,92 ---- } ! public void Accept(int listenSock, int sessionSock){ } *************** *** 230,234 **** */ ! public void SendData(String Data) throws LowLinkException, TransportLayerException, CommunicationException { --- 230,234 ---- */ ! public void SendData(int sock, String Data) throws LowLinkException, TransportLayerException, CommunicationException { *************** *** 247,251 **** * @version v0.02 */ ! public void RecvData(String Data) throws LowLinkException, TransportLayerException { --- 247,251 ---- * @version v0.02 */ ! public void RecvData(int sock, String Data) throws LowLinkException, TransportLayerException { Index: SNMP.java =================================================================== RCS file: /cvsroot/javanetsim/javaNetSim/core/protocolsuite/tcp_ip/SNMP.java,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** SNMP.java 23 Sep 2007 20:24:43 -0000 1.19 --- SNMP.java 25 Sep 2007 22:34:09 -0000 1.20 *************** *** 150,154 **** } ! public void Accept(int listenSock, int sessionSock) throws TransportLayerException{ //do nothing, UDP application } --- 150,154 ---- } ! public void Accept(int listenSock, int sessionSock){ //do nothing, UDP application } *************** *** 245,249 **** * @version v0.01 */ ! public void SendData(String Data) throws LowLinkException, TransportLayerException, CommunicationException { //mParentStack.sendUDP(this, Data); mParentStack.SL().writeTo(sock, Data, sdHost, sdPort); --- 245,249 ---- * @version v0.01 */ ! public void SendData(int sock, String Data) throws LowLinkException, TransportLayerException, CommunicationException { //mParentStack.sendUDP(this, Data); mParentStack.SL().writeTo(sock, Data, sdHost, sdPort); *************** *** 256,260 **** * @version v0.01 */ ! public void RecvData(String Data) throws LowLinkException, TransportLayerException { //appType = 0 - agent //appType = 1 - network management systems --- 256,260 ---- * @version v0.01 */ ! public void RecvData(int sock, String Data) throws LowLinkException, TransportLayerException { //appType = 0 - agent //appType = 1 - network management systems |