Not logged in. · Lost password · Register

Forum: Bachelor Softwaresysteme Systemprogrammierung RSS
N kleines tutorial zu sockets
Page:  1  2  3  4  next 
Sapier
Member since May 2003
4 posts
Subject: Aufgabe 6
Ich post hier mal die url wenn ihr das alles schon wisst/könnt könnt ihrs ja ignorieren ich jedenfalls fands hilfreich

http://www.ecst.csuchico.edu/~beej/guide/net/
This post was edited 2 times, last on 2003-12-04, 22:47 by Sapier.
Sebbi
Sensenmännlein
Avatar
Member since Nov 2002
377 posts
im prinzip ist die aufgabe ähnlich wie die Aufgabe 3 aus OTRS3 ... nur kein Java, keine Threads und mehr Fehlerbehandlung :-)
Repetition is a sign of stupidity. Repetition is a sign of stupidity. Repetition is a sign of stupidity.
snehls
Superfreund aka Der Schwede
Avatar
Member since Oct 2002
750 posts
juhu dann kann ich also endlich sagen dass ich ne OTRS3 aufgabe gemacht hab  :-D
"I will speculate that today’s single-threaded applications as actually used in the field could actually see a performance boost for most users by going to a dual-core chip, not because the extra core is actually doing anything useful, but because it is running the adware and spyware that infest many users’ systems and are otherwise slowing down the single CPU that user has today."
Eem
staatl. geprüfter Peppeneulenprüfer
Avatar
Member since Oct 2002
435 posts
wann terminiert ihr eure prozesse eigentlich?
im moment is bei mir überall noch ne endlosschleife drin.
Yves
Code artist
(Administrator)
Avatar
Member since Nov 2002
3282 posts
nicht dass ich etwa schon damit angefangen hätte.... ;)
aber ^C wird das programm schon auch beenden dann. wie sonst willst du einen blockierten prozess was prüfen lassen? tasten oder so? dann müsstest du die funktionen alle non-blocking verwenden und ich weiß net, ob das so viel spaß macht... grad mit aktivem warten und so.
Physikalisch gesehen ist ein Quantensprung die kleinstmögliche Zustandsänderung, meist von einem höheren auf ein niedrigeres Niveau.

Komprenu Energiemonitoring-Software | dotforward Webhosting
Eem
staatl. geprüfter Peppeneulenprüfer
Avatar
Member since Oct 2002
435 posts
also das telnet stürzt ab nach einem STRG^C und wer hat den gesagt das blockierte deamons nicht trotzdem ohne signal beendet werden können?
man denke z.B. an eine while(read != EOF) oder so
This post was edited on 2003-12-12, 18:22 by Eem.
Yves
Code artist
(Administrator)
Avatar
Member since Nov 2002
3282 posts
ach, im hintergrund soll das ganze laufen? (sorry, hab die aufgabe noch net angeschaut)
na dann kannst du z.b. ein spezielles quit-kommando einbauen, ein einfaches protokoll etwa. oder 'kill <pid>' oder sowas. oder du wertest EOF aus, kannst dann aber nur eine feste anzahl verbindungen oder so annehmen...
Physikalisch gesehen ist ein Quantensprung die kleinstmögliche Zustandsänderung, meist von einem höheren auf ein niedrigeres Niveau.

Komprenu Energiemonitoring-Software | dotforward Webhosting
Sebbi
Sensenmännlein
Avatar
Member since Nov 2002
377 posts
ich weiß jetzt nicht genau wie die Aufgabe eigentlich lautet, aber terminieren?

bind
listen
while(1) {
  accept
  if(fork == 0) {
    while(write(zeit) != -1) {
      sleep
    }
    close(connection)
    exit
  }
  tote_kinder_sammeln_sich_damit_aber_nicht_aufhalten()
}
close(socket)

dazwischen noch irgendwo ein geblocktes sigpipe und fertig, oder so ähnlich? Vielleicht auch das listen noch in die Schleife rein. Ich weiß nicht mehr genau wie das ging. Eben genau so wie in der OTRS aufgabe *g*

Strg-C terminiert das Programm. Die Kinder beenden sich dann ebenfalls. Ein Kind beendet sich auch, wenn write fehlschlägt und somit kein telnet mehr am socket horchen tut ...

Grüße,
Sebbi
Repetition is a sign of stupidity. Repetition is a sign of stupidity. Repetition is a sign of stupidity.
This post was edited 5 times, last on 2003-12-14, 15:44 by Sebbi.
Eem
staatl. geprüfter Peppeneulenprüfer
Avatar
Member since Oct 2002
435 posts
satrg-c terminiert aber leidr nicht meine telnet-sitzung.
ich hab allerdings auch kein sig-handling für die cildprozessse eingebaut.
meinst du das mit sigpipe?
Steppenwolf
Schläfer
Avatar
Member since Nov 2002
1535 posts
In reply to post #8
Quote by Sebbi:
dazwischen noch irgendwo ein geblocktes sigpipe und fertig, oder so ähnlich?

was meinst du denn damit?

Quote by Sebbi:
Strg-C terminiert das Programm.

bist du dir da sicher, dass das so gehen soll (strg-c als einziges programmende)? kann das vielleicht noch eine "autorisierte person" bestaetigen?
Steppenwolf
Schläfer
Avatar
Member since Nov 2002
1535 posts
In reply to post #9
Quote by Eem:
satrg-c terminiert aber leidr nicht meine telnet-sitzung.

die telnet-sitzung terminierst du mit strg-] bzw. str-+ auf der deutschen tastatur. dann kommst du zum "telnet> "-prompt, welches du mit "quit" beendest.
Eem
staatl. geprüfter Peppeneulenprüfer
Avatar
Member since Oct 2002
435 posts
das is ja schonmal was, danke.
jetzt is nur die frage obs den childprozess der sie socketverbindung mit dem datum zuspammt auch gekillt wird wenn die verbindung verloren geht. das würde ich jetzt mal intuitiv verneinen. fällt ja auch kaum auf wenn n paar dutzend prozesse die sockets zulabern. gibt ja genug prozesse die ich starten darf. und wenn ich den deamon mit strg-c kille hauts auch die kinder raus.
geht also schon, und mehr is ja auch nicht verlangt laut aufgabenstellung.

frahi?
Mikey
SP Team
Avatar
Member since Nov 2002
641 posts
erstmal: ihr könnt mein binary aus wwwcip.informatik.uni-erlangen.de/~simistil benutzen um zu sehen wie sich das Programm verhalten soll

1) terminieren soll es nie (CTRL+C wird es dann aber terminieren)

2) die Kinder sollen selbstverständlich sterben wenn die Verbindung geschlossen wird. Im Endeffekt wird euer write dann einen Fehler schmeissen.

3) der Vater soll die Zombies auch auflesen

4) die Ausgabe der Hostnamen die sich verbinden wie in meinem binary ist optional, euer timed muss eigentlich gar nix ausgeben
Sebbi
Sensenmännlein
Avatar
Member since Nov 2002
377 posts
In reply to post #10
Quote by Steppenwolf:
Quote by Sebbi:
dazwischen noch irgendwo ein geblocktes sigpipe und fertig, oder so ähnlich?

was meinst du denn damit?

Quote by Sebbi:
Strg-C terminiert das Programm.

bist du dir da sicher, dass das so gehen soll (strg-c als einziges programmende)? kann das vielleicht noch eine "autorisierte person" bestaetigen?

Aus der Manpage von write (man 2 write):
[b]ERRORS[/b]
       [b]EPIPE[/b]  fd is connected to a pipe or socket whose reading end is closed.  When
              this  happens  the writing process will also receive a SIGPIPE signal.
              (Thus, the write return value is seen only  if  the  program  catches,
              blocks or ignores this signal.)

Heißt also, dass write den EPIPE-Fehler nur zurückgibt, wenn man SIGPIPE blockt, fängt oder ignoriert, da sonst write selbst durch das Signal unterbrochen wird. (man möge mich korrigieren, wenn ich falsch liege) Probier mal aus, ob es auch ohne geht ... hatte das bei mir jedenfalls letztes Jahr aus irgendeinem Grund eingebaut :-)

Letzteres wurde ja von offizieller Stelle bestätigt *G*

Grüße,
Sebbi

P.S.: Hab noch das Auflesen der Kinder in den Pseudocode eingefügt :-)
Repetition is a sign of stupidity. Repetition is a sign of stupidity. Repetition is a sign of stupidity.
Mikey
SP Team
Avatar
Member since Nov 2002
641 posts
default Aktion bei SIGPIPE: Prozess wird terminiert

also das Kind stirbt -> was will man mehr ?
Close Smaller – Larger + Reply to this post:
Verification code: VeriCode Please enter the word from the image into the text field below. (Type the letters only, lower case is okay.)
Smileys: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Special characters:
Page:  1  2  3  4  next 
Go to forum
Datenschutz | Kontakt
Powered by the Unclassified NewsBoard software, 20150713-dev, © 2003-2011 by Yves Goergen