# Netzwerk Fehlererkennung



## erZ (23. Okt 2007)

Tag

Meine Aufgabenstellung lautet so:
Entwickeln Sie ein Programm zur Datenübertragung zwischen 2 Rechnern, die über ein Nullmodemkabel miteinander verbunden sind.
Die per Tastatur einzugebenden Zeichen sollen dabei auf der Empfängerseite auf Fehler überprüft werden. Im Falle einer fehlerhaften Zeichenübertragung soll eine Fehlerbehandlung erfolgen. Für den Test der Fehlererkennung sind Fehler in geeigneter Weise zu „erzeugen“. Endlosschleifen sind zu vermeiden. Zur Entwicklung können die Funktionen eines Betriebssystems (Systemrufe) genutzt werden.

Hört sich nicht so schwierig an, doch habe ich bedenken Java zu benutzen, da ich nicht weiss wie eine Fehlererkennung möglich ist. Ich würds halt so angehen, dass ich via Socket eine Verbindung aufbau und mit BufferedStreams die Datensende und mit serverSocket.accept(); dann empfangen usw. usw. Doch wie realisiere ich eine Fehlererkennung? Ich hab so leise das gefühl, dass mir das auf diesen Abstraktionsniveau schon das Betriebssystem abnimmt und ich daran nichts machen kann.

Bitte um Meinung/Rat

Gruß erZ


----------



## tuxedo (23. Okt 2007)

Dein eigentliches Problem hat nix mit Java zu tun. Fehlerbehandlung kann man in einer beliebigen Sprache behandeln. 

serverSocket.accept() gibt es AFAIK nur bei Netzwerk-Socket-Verbindungen. Bei einer Null-Modem-Verbindung via RS232 hast du jedoch genau wie bei einer Socketverbindung Streams mit denen du arbeiten kannst. 

Eine Methode der "Fehlerbehandlung" wäre die zu versendenden Daten zu Paketen zusammen zu schnüren und eine Prüfsumme anhand der Daten im Paket zu generieren. Diese sendest du mit. Der Empfänger liest das Paket + Prüfsumme. Danach errechnet er ebenso eine Prüfsumme anhand der Empfangenen Paketdaten und vergleicht diese mit der mitgesendeten Prüfsumme. Sind beide Prüfsummen gleich, kann man davon ausgehen dass die Übertragung tatsächlich fehlerfrei war. Jetzt sollte dem Sender mitgeteilt werden dass das nächste Paket geschickt werden kann.

Unterscheiden sich jedoch die Prüfsummen, sollte der Empfänger dem Sender mitteilen dass das Paket "Müll" war und er es nochmal senden soll. 

Das Betriebssystem nimmt dir bei RS232 Verbindungen glaub keine Fehlerkorrektur ab. 
Bei einer Netzwerkverbindung mit TCP sieht die Sache jedoch wieder etwas anders aus.

- Alex


----------



## erZ (23. Okt 2007)

Okay hab mich mit der Prüfsumme mal informiert - geniale Sache   und recht einfache sache was das Programmieren angeht.

Nun ist es so, dass ich unwissend bin in wiefern ich eine TCP Verbindung aufbaue und wann nicht. Kann man das wo nachlesen, wenn das zuviel Text für dich wär?


----------



## tuxedo (23. Okt 2007)

Du hast in deinem ersten Post von "Nullmodem" gesprochen. Nullmodem benutzt man bei seriellen Verbindungen mit einem RS232 Kabel das an die serielle Schnittstelle deines PCs angeschlossen wird. 

Das hat nix mit Netzwerk zu tun, folglich auch nicht mit TCP.

Du solltest also erstmal klären wie die Kommunikation jetzt wirklich stattfindet.

- Alex


----------



## erZ (23. Okt 2007)

Ja ich hab kein plan wie ich mit nen PC kommunizier, der keine TCP nutz. Daher die frage ... wie geht das oder wo kann man das nachlesen.


----------



## tuxedo (23. Okt 2007)

Mir scheint du hast keinen Dunst mit welcher Art von Kabel die PCs miteinander verbunden sind. Solange du das nicht weißt kann dir leider keiner helfen. Hellsehen können wir leider nicht.


----------



## erZ (23. Okt 2007)

Diese aufgabe ist uns sehr "locker" gestellt. Die gute Frau Lehrerin meinte ein normales CrossOver-Kabel. Also ein TwistedPair - gekreuzt halt. Serielle Verbindung und fertsch


----------



## tuxedo (23. Okt 2007)

Die Sache hat nur einen Haken:

Es gibt sowohl für Netzwerkverbindunen Cross-Over Kabel, und es gibt Cross-Over-Kabel für serielle RS232/Com Schnittstellen.

Ersteres Kabel hat einen RJ45 Stecker, letzteres meist einen 9-Pol Sub-D.

Ich sehe schwarz für dein "Projekt" wenn du Netzwerkschnittstelle und RS232-Com-Port nicht ausseinander halten kannst.

Und ganz wichtig: 

Netzwerk != RS232/ComPort

Gruß
Alex


----------



## erZ (23. Okt 2007)

RJ45 Stecker ... nen 9-Pol Sub-D habsch noch nie gehört.

Du ... die Aufgabe ist für ... später gedacht jedoch würde ich die halt schon gern vorarbeiten. Recht hast du schon ... dieses Basiswissen fehlt mir - doch ich denke das wird nicht so "wild" sein. Sobald ich nachlesen kann wie ich ne Verbindung aufbauen kann - läufts


----------



## tuxedo (23. Okt 2007)

Na also.. wäre das schonmal geklärt. Wenn du mit 9 Pol Sub-D und/oder RS232/ComPort nix anfangen kannst, dann streiche das Wort Nullmodem gaaaaanz schnell wieder aus deinem Wortschatz. Weil:

Das was du wirklich gemeint hast, im ersten Beitrag aber so nicht geschrieben hast, ist ein Cross-Over Netzwerkkabel und KEIN Nullmodem Kabel. Falsche Begriffe verwirren nur. Also in Zukunft korrekt ausdrücken, oder wenn du's nicht genau weißt, mehr Details liefern.

Für Netzwerk-Socket-Verbindungen gibts im Netz und auch hier im Forum tausende Beispiele.
Musst nur mal nach "echo server" oder "java socket server" googeln.

- Alex


----------



## erZ (23. Okt 2007)

Das aus dem ersten Beitrag ist von einer Professorin für Netzwerktechnik *hust* ich hab das nicht geschrieben, sondern nur Copy Paste


----------



## tuxedo (23. Okt 2007)

Also ich befasse mich jetzt seit rund 15 Jahren mit Netzwerken und Dingen dieser Art. Und das ist jetzt das erste mal, dass jemand "Nullmodem" sagt, und "Crossover" meint ;-)

BTW: 

Wenn die Kommunikation über TCP läuft, dann ist da schon eine gewisse Fehlerkorrektur drin. Google mal nach der Beschreibung von TCP. 

Bei UDP schauts anders aus.

- Alex


----------

