/* ** This file is part of Filius, a network construction and simulation software. ** ** Originally created at the University of Siegen, Institute "Didactics of ** Informatics and E-Learning" by a students' project group: ** members (2006-2007): ** André Asschoff, Johannes Bade, Carsten Dittich, Thomas Gerding, ** Nadja Haßler, Ernst Johannes Klebert, Michell Weyer ** supervisors: ** Stefan Freischlad (maintainer until 2009), Peer Stechert ** Project is maintained since 2010 by Christian Eibl <filius@c.fameibl.de> ** and Stefan Freischlad ** Filius is free software: you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation, either version 2 of the License, or ** (at your option) version 3. ** ** Filius is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied ** warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ** PURPOSE. See the GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with Filius. If not, see <http://www.gnu.org/licenses/>. */ package filius.software.transportschicht; import filius.Main; import filius.exception.SocketException; import filius.software.ProtokollThread; import filius.software.system.InternetKnotenBetriebssystem; import filius.software.vermittlungsschicht.IpPaket; public class TransportProtokollThread extends ProtokollThread { private TransportProtokoll protokoll; public TransportProtokollThread(TransportProtokoll protokoll) { super(((InternetKnotenBetriebssystem) protokoll.holeSystemSoftware()) .holeIP().holePaketListe(protokoll.holeTyp())); Main.debug.println("INVOKED-2 ("+this.hashCode()+", T"+this.getId()+") "+getClass()+" (TransportProtokollThread), constr: TransportProtokollThread("+protokoll+")"); this.protokoll = protokoll; } protected void verarbeiteDatenEinheit(Object datenEinheit) { Main.debug.println("INVOKED ("+this.hashCode()+", T"+this.getId()+") "+getClass()+" (TransportProtokollThread), verarbeiteDatenEinheit("+datenEinheit.toString()+")"); SocketSchnittstelle socket; IpPaket paket; Segment segment; paket = (IpPaket) datenEinheit; segment = (Segment) paket.getSegment(); // Main.debug.println(getClass() // + "\n\tverarbeiteDatenEinheit() aufgerufen" + "\n\tZielport: " // + segment.getZielPort()); try { socket = protokoll.holeSocket(segment.getZielPort()); socket.hinzufuegen(paket.getSender(), segment.getQuellPort(), segment); } catch (SocketException e) { if (!paket.getEmpfaenger().equals("255.255.255.255") && !paket.getEmpfaenger().equals("0.0.0.0")) e.printStackTrace(Main.debug); } } }