# Socket In und Out überwachen?



## Samuel (10. Jun 2006)

Wir haben hier eine simple, nicht gethreadtete Server Client Struktur und die ist natürlich voller bugs 
Problem ist, dass wir nicht dahinter kommen, weil es ein Problem mit Senden und Empfangen der Daten zusammenhängt.
Szenario sieht so aus, dass Server einen Anfrage sendet und Antwort bekommt, bevor der Client überhaupt was zurüückgeben konnte. Das führt zu Seiteneffekten die dann am Ende nen großen Bums machen.
Nun wird man aber recht schnell wahnsinnig Client und Server gleichzeitig zu debuggen  und ich schau mich nach etwas um, was mir vielleicht als Monitor auf dem gewählten Port dienen könnte. Getestet wird local, daher wäre ein Monitor, der uns die Infos gibt, was auf Port x gesendet wird ideal.
Gibt es bereits solche hilfreiche Werkzeuge, oder hat jemand einen Tipp?

Danke


----------



## The_S (11. Jun 2006)

Ich kenne zwar keine solche Software, aber evtl. können wir euch hier zumindest auf einige Bugs aufmerksam machen, wenn wir ein bisschen Code und genauere Informationen zu den Fehlern hätten.


----------



## foobar (11. Jun 2006)

Guck dir mal http://www.ethereal.com/ an, damit habe ich sehr gute Erfahrungen gemacht.


----------



## Samuel (11. Jun 2006)

Edit: Schade, der Analyzier scheint alles zu bemerken, nur nicht die mini pakete, falls es pakete sind, die ich über diesen Port rumschubse

Werde mir das Ding mal angucken danke.

Und mit dem Code, dass ist so ein Problem, sind mehrere Hundert Zeilen und mehrere Klassen, dass wäre ne Zumutung, dies alles hier zu posten, weil es schon sehr groß geworden ist.

Grob kann man folgendes saagen.
Ein gethreadeter Teil des Servers sammelt an Port x Verbindungen und haut diese in eine Menge, ien anderer Teil des Servers ruft bei jedem Client dieser Menge ein Protokoll. Er fragt jetzt dauerhaft an, ob der Client bereit ist, dieser sendet eine 0 oder 1 zurück, irgendwann, muss der Client bereit true=1 senden, haben das alle, sind diese im Status namen eingeben, nur passiert es da oft, dass 0,1,2 oder 3 Clients von 3 den Namendialog nicht bekmmen und der Server diese mit "1" benennt.
Da haben wir den Verdacht, dass der Stream eine Art Heap als Cache benutzt und der Server irgendwie noch die 1 von bereit bekommt, obwohl er den Namen haben soll.
Allerdings kann man das Problem auch nicht konkretisieren, weil es lokal auf einem Rechner selteenr auftritt, nachdem wir ein Thread.sleep(500) in die while bereit schleife reingepackt haben, wir vermuten aber auch, dass unser Port 1234 irgendwie von anderen Apps geteilt wird, haben aber auch andere getestet.
Das Problem mit 1 als Name tritt aber häufiger auf, nachdem wir es durch ein richtiges Netzwerk getestet haben.
Daher hoffen wir mit dem Monitor irgendwas zu sehen


----------



## Illuvatar (11. Jun 2006)

Also wenn du dir da selber was schreiben willst, in Java geht das nicht, in anderen Programmiersprachen musst du afair nach "raw sockets" suchen. Vielleicht findest du mit dem Stichwort ja auch bei Google ein brauchbares Tool.


----------



## Samuel (11. Jun 2006)

Ne, andere Sprachen sind im Moment nicht drin auf dem System


----------

