my code ist this
[CODE]
#!/usr/bin/ruby
Dies ist der Server der auf die Verbindung wartet und entweder
Dateien versendet oder sie hochläd
Der Server läuft auf PORT 10032 und läuft in einer Endlosschleife
noch
require ‘socket’
def hochladen
gs = TCPServer.open(10032) #Es wird ein Server auf Port 10032 gestartet
Der Server wartet auf einen Verbindungsaufbau. Dies
ist als Endlosschleife gemacht da es in Ruby leider keine
Möglichkeit gibt auf eine Tastatureingabe zu warten und
trotzdem weiter zu laufen. Vielleicht kann man das mit
Threads realisieren aber ich hab momentan noch keinen
Plan wie ich dies machen könnte
while true
# Wenn eine Verbindungsanfrage eingeht wird ein eigener
# Thread gestartet für den User und ein Socketobjekt erstellt
Thread.start(gs.accept) do |s|
# Statusmeldung, könnte man zB. in ein Serverlog reinschreiben
# aber das gehört ja nicht zur Aufgebenstellung, deshalb hier
# nur auf dem Bildschirm bisher, aber das umleiten solte kein
# Problem darstellen
print(s, " hat eine Verbindung aufgebaut\n")
# Wir warten darauf was der User tun will
s.gets
auswahl = $_
auswahl.chop! # Die \n Zeichen am ende werden entfernt
if auswahl == "H" # Der Client will also eine Datei hochladen
# zuerst sagen wir dem Client dass wir verstanden haben
# was er will
s.write("ok\n")
# und warten auf den Dateinamen
s.gets
dateiname = $_
dateiname.chop!
puts dateiname + " wird hochgeladen\n"
# Jetzt öffnen wir die Datei zum schreiben
# Und senden dem Client ein signal ob dies
# funktioniert hat.
dateiname = dateiname + "up"
f = File::open(dateiname,mode="w")
if f
s.write("ok\n")
else
s.write("f\n")
lesen = s.gets
lesen.chomp!
bytezaehler = 0
while bytezaehler < lesen.to_i
f.putc(s.getc)
bytezaehler=bytezaehler+1
end
f.close
end
if auswahl == "D"
···
#
#
end
print (s, " wurde abgebrochen\n")
s.close
end
end
[/CODE]
And her i get a parse Error in Line 75, its one of the two end at the end of
the file . I think the Problem is the Thread Command but i do not know what
to do I hope somebody can !? And perhaps can explain what my error.
mfg. Jonas Hoffmann