Ejemplo básico de socket (cliente IRC)

Esto es un ejemplo básico del uso de sockets como cliente.

 

# Creo el socket y guardo el ID en la variable "sock"
set sock [socket irc.chathispano.com 6667]
# Con fconfigure indico que quiero leer línea a línea
fconfigure $sock -buffering line
# Con fileevent activo el proc que leerá la conexión
fileevent $sock readable [list sockRead $sock]
puts $sock "NICK es_eggdrop"
puts $sock "USER es_eggdrop * * :es_eggdrop"

proc sockRead {sock} {
	if {[eof $sock]} {
		putlog "Conexión cerrada."
		close $sock
		return
	}
	gets $sock line
	putlog "Recibido: $line"
	if {[lindex [split $line] 0] == {PING}} {
		puts $sock "PONG [lindex [split $line] 1]"
		putlog "PING? PONG!"
	}
}

if {[info commands putlog] eq ""} {
	proc putlog {line} {
		puts $line
	}
}
# Ya que en tcl puro no existe un bucle infinito que mantenga a la escucha 
# el intérprete, con esto lo forzamos. No es necesario en eggdrop
vwait forever

Leave a Reply