timed
Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.
Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.
Aufgabe 7
So, jetzt hab ich mich schon mal ein bisschen mit Aufgabe 7 rumgespielt und festgestellt, dass telnet eigentlich ein Scheiß ist… Im Gegensatz zu netcat (–> viiel besser geeignet) schließt es nämlich bei einem SIGINT nicht einfach seine Sockets und gibt Ruhe, sondern nur dann, wenn man im Befehls-Modus (Standard-Escape: ^] = Strg + ] = Strg + AltGr + 9…) ein close oder quit eingibt… => bind: Address already in use…
Danke für den Hinweis. Ich werd also zum Testen mit netcat arbeiten.
Bei mir schreibt current_time:
2006-06-29 11:18:Îm
das ist normal
Irgendwelche Vorschlaege?
sieht nach einem write(socket, zeitstring, 20) aus. Write kennt keine Strings, das gibt einfach soviele Bytes aus wie Du ihm mitgibst und macht auch bei vor einem nicht halt…
strlen is your friend!
Gut ich gebe ihn die Anzahl der Zeichen die ich ausgeb 20 schon an (mit oder ohne strlen getestet.) Denoch hab ich so lustige Zeichen mit drin ![]()
[color=red]
Edit:[/color] Fixed - ka was es war es ging aufeinmal ![]()
Kompilieren vergessen, fehler im Makefile? Datei aus falschem Verz. gestartet? Wenn sich so gar nix tut, sollte man sowas ueberpreufen, ein ‘make clean all’ hilft, falls das Makefile nicht ganz richtig die Abhaengigkeiten checkt.
20 ist nicht die anzahl der zeichen die du ausgeben musst (zaehl mal nach)
Doch mit 20 ists recht da funktioniert die Ausgabe und ich werd das auch nicht mehr Aendern funktioniert wunderbar so ![]()
Aus der manpage
The strlen() function calculates the length of the string s, not including the terminating ‘’ character.
Kann es sein, dass du einfach das abschliesende ‘’ vergisst zu uebertragen?
Du musst strlen+1 Zeichen uebertragen, oder auf der anderen seite ein anhaengen.
Solche Situationen ‘das tut scheinbar, aber ich weiss nicht warum’ raechen sich manchmal sehr bitter, hier z.B. wenn du die Ausgabe mal umstellen wuerdest auf Monatsnamen und die dann in einem Monat ploetzlich > 20 Zeichen werden.
gna der beitragsparser macht das terminierende Nullsymbol zu ‘’, aber weiss ja jeder was gemeint ist.
Ich glaub eigentlich nicht, dass man ein \0 übertragen muss – sind ja keine einzelnen C-Strings sondern ein Stream.
Arrg… Der Airhardt hatte es doch irgendwann schonmal raus, wie man das \ 0 schreibt… Ah! \ \ 0 0
Naja du musst kein 0 schreiben damit das funktioniert, aber es kommt halt auch kein 0 an auf der anderen Seite und wenn du das dem printf vorwirfst gibts genau dieses Problem.
Jaa… da müssen wir wohl erstmal eine Arbeitsgruppe zum Entwurf eines geeigneten Übertragungsprotokolls bilden… ![]()
Ich schick jedenfalls kein \0 mit, darum soll sich der Client dann kümmern…
…und wenn man sich’s recht überlegt, ist es eigentlich grob fahrlässig, von irgendetwas, das ich aus dem Netz bekommen hab, zu erwarten, dass es ein nullterminierter String ist und so lang weiterzulesen bis hoffentlich rechtzeitig ein \0 kommt… → Das \0 muss einfach Client-Aufgabe sein…
der telnet/netcat braucht kein \0, der gibt einfach aus was uebertragen wird…
kann mir mal jemand sagen wie man das testet? ich komm grad weder mit telnet noch netcat klar… :wand: :wand: :wand:
Was genau ist denn dein Problem?
Wenn dein timed z.b. auf Port 4711 läuft, dann tippst du das in eine Konsole ein:
nc localhost 4711
hmm… evtl geht auch mein timed noch nicht… ![]()
Das ist natürlich auch eine Option…
telnet
netcat
z.b.
telnet faui05 1234