Vous n'êtes pas identifié(e).

Top posteurs

Statistiques

Partenaires

  • eXolia Hosting
  • Eggdrop.fr

#1 24/01/2012 23:54:12

Nickoos
IRCzien
Lieu : Treignes
Inscription : 10/09/2011
Messages : 164

[TCL] Serveur et client

Hello,

Pour les gens intéressés, voici un bout de code pour monter un serveur en TCL.

Le serveur :

Code: TCL
set port 6000
 
proc log { msg } {
	set timestamp [clock format [clock seconds] -format "%d-%m-%Y %H:%M:%S"]
	puts "\[$timestamp\] $msg"
}
 
proc Server {channel clientaddr clientport} {
	set ::($channel:host) $clientaddr
	set ::($channel:port) $clientport
	log "$::($channel:host):$::($channel:port) : Nouvelle connexion"
	fconfigure $channel -buffering line -blocking 0
	fileevent $channel readable [list server_eval $channel]
}
 
proc server_eval { channel } {
	if {![eof $channel]} then {
		gets $channel line
		set cmd [lindex $line 0]
		set param [lindex $line 1]
		switch -exact $cmd {
			"hello" {
				puts $channel "Hello"
				client_dc $channel
                        }
			default {
				log "$::($channel:host):$::($channel:port) : Message inconnu. ($line)"
				client_dc $channel
			}
		}
	} else {
		client_dc $channel
	}
}
 
proc client_dc { channel } {
	log "$::($channel:host):$::($channel:port) : Fin de connexion"
	close $channel
}
 
socket -server Server $port
log "Serveur démarré et en lecture sur le port $port"
 
vwait forever

Le client :

Code: TCL
set ip 127.0.0.1
set port 6000
 
proc openSocket {ip port} {
        if { [catch {socket $ip $port} ::idx] } {
                puts "erreur : $::idx"
                exit
        } else {
		puts "Connecté sur $ip:$port"
        }
 
        fconfigure $::idx -buffering line
        fileevent $::idx readable [list event $::idx]
 
        lancement
}
 
 
proc sendRaw {raw} {
	puts "==> $raw"
	puts $::idx "$raw"
}
 
 
 
proc lancement { } {
	sendRaw "hello"
}
 
proc event {s} {
    gets $s data
    if { [eof $s] } {
	 close $::idx
        puts "EOF"
    }
    set arg [split $data]
    event $data
    #Debug
    puts "<== $arg"
}
 
proc event { data } {
  set cmd [lindex $data 0]
}
 
openSocket $ip $port
 
vwait forever

Je laisse votre imagination dévoiler ce que vous pourriez faire avec smile

Dernière modification par Nickoos (01/08/2013 22:32:54)

Hors ligne

#2 25/01/2012 15:37:55

Diogene
IRCzien chevronné
Lieu : Le Mans
Inscription : 09/07/2011
Messages : 181

Re : [TCL] Serveur et client

Bonjour,

Merci de ce partage, ça pourra m'être utile tongue

Amicalement, Diogene.


Mieux vaut mourir incompris que passer sa vie à s'expliquer. [William Shakespeare]

Bon, c'est Diogene, mais c'est un humain malgré tout [CrazyCat]

Hors ligne

#3 12/02/2012 17:05:33

SaiTek
IRCzien
Inscription : 07/12/2011
Messages : 108

Re : [TCL] Serveur et client

Et qu'est-ce que l'on peux faire avec ? A quoi ça sert ? Comment l'utilise t-on ? tongue Parce que là j'avoue que je suis un peux perdu ^^

Hors ligne

#4 13/02/2012 01:00:23

Nickoos
IRCzien
Lieu : Treignes
Inscription : 10/09/2011
Messages : 164

Re : [TCL] Serveur et client

Tu pourrais par exemple faire ton propre serveur irc avec smile
Enfin, ton propre protocol smile

Hors ligne

Pied de page des forums

1325107 visites ( 279 aujourd'hui ) 7 visiteurs en ligne
Copyright © 2004 - 2013 IRCz