TCL在连接时向客户端发送ping
我想知道是否有可能在每次客户端连接时向客户端发送ping 我已经安装了一个echo服务器,我正在尝试修改它以向每个客户端发送ping,这可能吗 我已尝试在EchoAccept函数下添加此循环,但这会导致错误:TCL在连接时向客户端发送ping,tcl,tk,Tcl,Tk,我想知道是否有可能在每次客户端连接时向客户端发送ping 我已经安装了一个echo服务器,我正在尝试修改它以向每个客户端发送ping,这可能吗 我已尝试在EchoAccept函数下添加此循环,但这会导致错误: foreach connection { 127.0.0.1 }{ping $connection} proc Echo_server {port} { global echo set echo(
foreach connection {
127.0.0.1
}{ping $connection}
proc Echo_server {port} {
global echo
set echo(main) {socket -server EchoAccept $port}
}
proc EchoAccept {sock addr port} {
global echo
puts "Accept $sock from $addr port $port"
set echo(addr,$sock) [list $addr $port]
f configure $sock -buffering line
fileevent $sock readable [list Echo $sock]
}
proc Echo {sock} {
global echo
if {[eof $sock] || [catch {gets $sock line}]} {
# end of file or abnormal connection drop
close $sock
puts "Close $echo(addr,$sock)"
unset echo(addr,$sock)
} else {
if {[string compare $line "quit"] ==0} {
# Prevent new connections.
# Existing connections stay open.
close $echo(main)
}
puts $sock $line
}
}
vwait forever
谢谢你这里有个错误:
foreach connection {
127.0.0.1
}{ping $connection}
# ..^^
因为Tcl是面向单词的,所以空格非常重要:在foreach body前面缺少一个空格可能吗?对好主意?我不相信,尤其是NAT防火墙…谢谢,但我应该把它放在代码中的什么地方,因为我放在哪里,它会抛出一个错误,即使有空格?