Salve a tutti.
Ho scritto un piccolo chatserver (TCPServer::new etc etc)
che usiamo a lezione per chattare in gruppo in tranquillità loggando
con client tipo netcat o telnet.
Oggi mi sono messo a scrivere un client e sarò inesperto ma ho
realizzato
che è meno banale del previsto ç_ç.(colpa mia sicuramente!sono
inesperto)
Alla fine sono riuscito a scrivere qualcosa di effettivamente
funzionante
ma sono sicuro che esistono altre maniere per ottenere lo stesso
risultato e cerco qualcuno che mi possa illuminare al riguardo.
L’ossatura del client è:
#################################################################
require ‘socket’
connection=TCPSocket::new(“127.0.0.1”,2200)
fork do
while 1
a=Thread.new{ print connection.readline }
a.join
end
end
while 1
b=Thread.new { input=sprintf(gets()); connection.print(input) }
b.join
end
Process.exit!
###################################################################
L’ultima riga l’ho messa in maniera un po brutale ma funziona, mi evita
di trovarmi un processo ancora attivo dopo l’uscita dal primo( esiste un
modo meno brutale di scrivere sta cosa?)
Per quanto riguarda i vari tentativi precedenti ho provato a scrivere 2
thread senza il fork ma non sono riuscito a trovare un modo per farli
dialogare tra loro o comunque a sbloccarmi l’IO.
Sono sicuro che c’è qualcosa a livello di Thread,Socket o IO che mi
sfugge.
Ribadisco: il client funziona ma non mi sento soddisfatto, mi pare
di aver scritto qualcosa che poteva essere fatta in maniera molto piu
performante ed elegante. Grazie in anticipo e Saluti.