Hallo zusammen.
ich habe ein kleines Projekt im Studium erhalten, ein Programm zu
schreiben, welches einen Socket erstellt und über einen String an das
verbundene Gerät (IP/Port) schickt.
Nun möchte ich das Ganze mal ausprobieren. Leider finde ich kein
Programm, mit dem man sehen kann, ob meine programmierte Software nun
auch richtig den Socket/die Verbindung aufbaut bzw. ob der String auch
entsprechend rausgeschickt wird.
Außerdem möchte ich, dass ich einen Response an meine Software schicken
kann, damit ich sehe, wie diese reagiert.
Wisst ihr was ich meine?
Gibt es da so etwas wie ein "Terminal" für COM-Schnittstellen, nur eben
auf Netzwerkbasis?
Vielen Dank!
Lars schrieb:> Leider finde ich kein> Programm, mit dem man sehen kann, ob meine programmierte Software nun> auch richtig den Socket/die Verbindung aufbaut bzw. ob der String auch> entsprechend rausgeschickt wird.
Das verstehe ich nicht. Entweder du musst in dem Projekt nur den Client
schreiben, dann gibt es schon das entsprechende Serverprogramm, also
benutze das.
Oder du sollst beide Programme erstellen dann mach das doch einfach.
Eine Suche nach "socket programmierung" fördert hunderte Treffer auch zu
Programmbeispielen.
Hier z.B. für Windows nach 5sekunden Suche:
http://www.c-worker.ch/tuts/wstut_op.php
Hallo Leute!
Mein geschriebenes Programm ist die Client-Seite. Dort gebe ich IP und
Port ein, um sich dann an ein Messgerät zu verbinden. Dieses Messgerät
liefert auf eine entsprechende Anfrage eine Rückantwort.
Da ich dieses Gerät leider nicht zuhause zum testen habe, brauche ich
eben etwas, was dieses Messgerät "simuliert".
Das heißt:
Ich schicke mit meinem Programm eine Anfrage raus ans Messgerät,
daraufhin antwortet das Messgerät und mein Programm wertet die Antwort
aus.
Kann WireShark und Co. das?
Danke!
Zwar eine nette Idee...aber nicht wirklich hilfreich. Woher weiß ich ob
dann das "Server-"Programm fehlerfrei funktioniert.
Gibts da nichts in der Linux-Welt, womit man einfach einen Befehl auf
die eth0 rausschicken kann?!
Lars schrieb:> Gibts da nichts in der Linux-Welt, womit man einfach einen Befehl auf> die eth0 rausschicken kann?!
netcat koennt' dir vielleicht weiterhelfen.
Gruss
WK
Manchmal frage ich mich schon, warum alles so umständlich ist.
Das ist doch eine Problemstellung, die es täglich gibt, und noch immer
muss man sich sein Zeug selbst programmieren...
Lars schrieb:> Manchmal frage ich mich schon, warum alles so umständlich ist.> Das ist doch eine Problemstellung, die es täglich gibt, und noch immer> muss man sich sein Zeug selbst programmieren...
Du hast völlig recht, absolut unnötig, am Ende lernst du noch was durch
das selbst programmieren. Echt ätzend.
:-)
Ich sage nicht, dass es unnötig ist oder ätzend, aber wenn man schnell
ein Ergebnis möchte, muss man sich erst selbst verzetteln...das nervt.
Aber gut zu wissen, dass es sowas noch nicht gibt, vielleicht werde ich
bald reich. ;)
Es gibt sowas wie (fast) wie Sand am Meer:
CANoe (Windows, teuer), odisLogger (Windows + Linux, preiswert für
privat, Demolizenz möglich)) um nur zwei zu nennen.
Gruß
Olaf
PS: Zweiteres ist von mir und ich brauche noch Tester :-)
Klaus Wachtler schrieb:> derguteweka schrieb:>> netcat koennt' dir vielleicht weiterhelfen.>> Genau das ist das Mittel der Wahl.> Findet sich nur kaum in den vielen Antworten.
Das ist nicht das Mittel der Wahl, weil er ein Protokoll programmieren
muss.
Netcat kann das zwar an andere Programme weiterleiten, das wird aber
schmerzhaft, weil sich netcat immer wieder beendet wenn die Verbindung
geschlossen wird.
Gruß
Olaf
Olaf Dreyer schrieb:> Klaus Wachtler schrieb:>> derguteweka schrieb:>>> netcat koennt' dir vielleicht weiterhelfen.>>>> Genau das ist das Mittel der Wahl.>> Findet sich nur kaum in den vielen Antworten.>> Das ist nicht das Mittel der Wahl, weil er ein Protokoll programmieren> muss.> Netcat kann das zwar an andere Programme weiterleiten, das wird aber> schmerzhaft, weil sich netcat immer wieder beendet wenn die Verbindung> geschlossen wird.>> Gruß>> Olaf
Na ja, ganz so schlimm ist das ja noch nicht. Der TE möchte ja erst mal
nur mit Sockets rumspielen.
@TE programmiere dir doch die andere Seite selber. Da lernst du auch
noch was dabei. Sockets sind ja keine Einbahnstraße.
Alternativ eine kleine Liste:
Realterm
Putty
netcat
telnet
socat
Die können sich alle auf einen Server verbinden. Da muss doch was dabei
sein für dich.
Klaus Wachtler schrieb:> Genau das ist das Mittel der Wahl.
Und wie machst du das, das Netcad sich als Server installiert und bei
einem Request des zu testenden Clients diesem z.B. ein Magic Word
zusendet, dann auf Daten des Clients wartet und -abhängig von diesen
Daten- dann eine passende Antwort gibt?
Und das alles in einer Verbindung.
Udo Schmitt schrieb:> Klaus Wachtler schrieb:>> Genau das ist das Mittel der Wahl.>> Und wie machst du das, das Netcad sich als Server installiert und bei> einem Request des zu testenden Clients diesem z.B. ein Magic Word> zusendet, dann auf Daten des Clients wartet und -abhängig von diesen> Daten- dann eine passende Antwort gibt?> Und das alles in einer Verbindung.
Ich sag ja, mit netcat wird das wehtun.
So...ich habe dankend das Perl-Skript ausgeführt, jetzt habe ich aber
schon Java-Seitig ein Problem:
Laut diesem Code soll er die Antwort des Perl-Programms doch eigentlich
in der Konsole ausgeben...tut er aber leider nicht. :(
Die Anzahl der Bytes stimmen.
Wisst ihr, woran das liegen kann, dass er zwar die Anzahl der
empfangenen Bytes anzeigt, aber nicht die Daten selbst?
Udo Schmitt schrieb:> Und wie machst du das, das Netcad sich als Server installiert und bei> einem Request des zu testenden Clients diesem z.B. ein Magic Word> zusendet, dann auf Daten des Clients wartet und -abhängig von diesen> Daten- dann eine passende Antwort gibt?> Und das alles in einer Verbindung.
warum klingt das bei dir kompliziert?
'nc -l -p 3333' startet den Server. Die Anfrage siehst du im Klartext
auf deiner Konsole. Dann kannst du vorbereitete Antworten per copy/paste
zurück schicken und schauen, wie dein Programm reagiert.
Ist jetzt nicht wirklich schwer oder?
nicht"Gast" schrieb:> Dann kannst du vorbereitete Antworten per copy/paste> zurück schicken und schauen, wie dein Programm reagiert.>> Ist jetzt nicht wirklich schwer oder?
Aber nicht lustig, wenn man das zum Testen x-Mal in der Stunde machen
muss. Es ist das typische Gefummel bei dem sich manche Programmierer
einreden, sie wären extrem produktiv, weil sie ständig rumwuseln.
Jay schrieb:> nicht"Gast" schrieb:>> Dann kannst du vorbereitete Antworten per copy/paste>> zurück schicken und schauen, wie dein Programm reagiert.>>>> Ist jetzt nicht wirklich schwer oder?>> Aber nicht lustig, wenn man das zum Testen x-Mal in der Stunde machen> muss. Es ist das typische Gefummel bei dem sich manche Programmierer> einreden, sie wären extrem produktiv, weil sie ständig rumwuseln.
Also im OT steht, daß er ein selbgebautes Programm hat und testweise die
Gegenseite simulieren will.
Genau dafür ist netcat ideal.
Daß man das nicht als Dauertest stundenlang machen will, ist doch gar
nicht gefragt.
nicht"Gast" schrieb:> warum klingt das bei dir kompliziert?
Weil ich netcad nicht kenne.
Ich gehe also jetzt davon aus, dass netcad kein Konsolenprogramm ist das
sich von selbst beendet, sondern dass es ähnlich wie ftp eine eigene
Konsole öffnet und offen hält, in der man weitere Kommandos eingeben
kann.
Danke, wieder was gelernt.
Wenns nur Strings sein sollen reichen Linux Boardmittel. netcat zum
senden und empfangen von Strings und tcpdump um zu sehen was über die
Leitung geht. Wenn du etwas zum Klicken brauchst, kannst du statt
tcpdump natürlich auch wireshark nehmen.
Lars schrieb:>> Nun möchte ich das Ganze mal ausprobieren. Leider finde ich kein> Programm, mit dem man sehen kann, ob meine programmierte Software nun> auch richtig den Socket/die Verbindung aufbaut bzw. ob der String auch> entsprechend rausgeschickt wird.
Du schreibst nicht für was : windows/linux
daher hier mal ein kleiner win server
einfach entpacken und starten, es wird nichts installiert, keine
registry oder sonswas verändert.
entfernen kannst ihn dann idem du ihn einfach wieder löscht.
Deine CLient Message 'string' steht dann im 'Incomming' Fenster drin
> Außerdem möchte ich, dass ich einen Response an meine Software schicken> kann, damit ich sehe, wie diese reagiert.
Schreibst du in 'Server Response' rein
>> Wisst ihr was ich meine?
Hoffe es :)
anbei ein kleiner Test Server
wenn du HEX, BIN oder andere Anzeigen auch brauchst musst dich etwas
gedulden, hatte nur paar minuten zeit.
Port einstellen, Server Active setzen,
dein client auf die IP + Port setzen,
connecten, senden und kontrollieren ob alles durchläuft.
Feedback wäre nett, auch Verbesserungsvorschlag.
Ist einfach gehalten, also richtige Portnummer angeben
dann erst Server active setzen..
lg
rudi :)
Udo Schmitt schrieb:> netcad
Das kenne ich auch nicht.
Aber netcat :-)
Das ist wiederum ein Konsolenprogramm (lief mir auch schon mit dem
aussagekräftigen Namen nc über den Weg).
Klaus Wachtler schrieb:> Udo Schmitt schrieb:>> netcad>> Das kenne ich auch nicht.> Aber netcat :-)
gmml
Klaus Wachtler schrieb:> (lief mir auch schon mit dem> aussagekräftigen Namen nc über den Weg).
aka 'not connected'?
Passt irgendwie :-)
Lars schrieb:> Wisst ihr, woran das liegen kann, dass er zwar die Anzahl der> empfangenen Bytes anzeigt, aber nicht die Daten selbst?
bin mir nicht ganz sicher
aber probiere mal:
anstatt
>
Es gibt eigentlich auf jedem netzwerkfähigen Unix-/Linuxserver eine
echo Service. Die Port-Nummer habe ich gerade nicht zur Hand, steht
aber in der /etc/services. Kann sein, dass der heute aus
Sicherheitsgründen standardmäßig disabled ist, dann musst Du ihn erst
freischalten. Dieser Dienst gibt einfach alles, was ihm geschickt wird,
unverändert an den Client zurück. Also einfach bei einem Server Deiner
Wahl auf diesen Port verbinden, String senden und Antwort einlesen. Wenn
es exakt der gleiche String ist sollte Deine Verbindung funktionieren.
A. H. schrieb:> Es gibt eigentlich auf jedem netzwerkfähigen Unix-/Linuxserver eine> echo Service.
Den gibt es auch auf jedem Windows, wird nur normalerweise nicht mit
installiert. Zu finden in den "Windows features" als "Simple TCPIP
services"