⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 socket.test

📁 tcl是工具命令语言
💻 TEST
📖 第 1 页 / 共 3 页
字号:
    puts $s2 one    flush $s2    after 500    fconfigure $sock -blocking 0    set result a:[gets $sock]    lappend result b:[gets $sock]    fconfigure $sock -blocking 1    puts $s2 two    flush $s2    fconfigure $sock -blocking 0    lappend result c:[gets $sock]    fconfigure $sock -blocking 1    close $s2    close $s    close $sock    set result} {a:one b: c:two}test socket-3.1 {socket conflict} {socket stdio} {    removeFile script    set f [open $path(script) w]    puts $f {	set f [socket -server accept 0]	puts ready	puts [lindex [fconfigure $f -sockname] 2]	gets stdin	close $f    }    close $f    set f [open "|[list [interpreter] $path(script)]" r+]    gets $f    gets $f listen    set x [list [catch {socket -server accept $listen} msg] \		$msg]    puts $f bye    close $f    set x} {1 {couldn't open socket: address already in use}}test socket-3.2 {server with several clients} {socket stdio} {    removeFile script    set f [open $path(script) w]    puts $f {	set t1 [after 30000 "set x timed_out"]	set t2 [after 31000 "set x timed_out"]	set t3 [after 32000 "set x timed_out"]	set counter 0	set s [socket -server accept 0]	proc accept {s a p} {	    fileevent $s readable [list echo $s]	    fconfigure $s -buffering line	}	proc echo {s} {	     global x             set l [gets $s]             if {[eof $s]} {                 close $s                 set x done             } else {                 puts $s $l             }	}	puts ready	puts [lindex [fconfigure $s -sockname] 2]	vwait x	after cancel $t1	vwait x	after cancel $t2	vwait x	after cancel $t3	close $s	puts $x    }    close $f    set f [open "|[list [interpreter] $path(script)]" r+]    set x [gets $f]    gets $f listen    set s1 [socket 127.0.0.1 $listen]    fconfigure $s1 -buffering line    set s2 [socket 127.0.0.1 $listen]    fconfigure $s2 -buffering line    set s3 [socket 127.0.0.1 $listen]    fconfigure $s3 -buffering line    for {set i 0} {$i < 100} {incr i} {	puts $s1 hello,s1	gets $s1	puts $s2 hello,s2	gets $s2	puts $s3 hello,s3	gets $s3    }    close $s1    close $s2    close $s3    lappend x [gets $f]    close $f    set x} {ready done}test socket-4.1 {server with several clients} {socket stdio} {    removeFile script    set f [open $path(script) w]    puts $f {	set port [gets stdin]	set s [socket 127.0.0.1 $port]	fconfigure $s -buffering line	for {set i 0} {$i < 100} {incr i} {	    puts $s hello	    gets $s	}	close $s	puts bye	gets stdin    }    close $f    set p1 [open "|[list [interpreter] $path(script)]" r+]    fconfigure $p1 -buffering line    set p2 [open "|[list [interpreter] $path(script)]" r+]    fconfigure $p2 -buffering line    set p3 [open "|[list [interpreter] $path(script)]" r+]    fconfigure $p3 -buffering line    proc accept {s a p} {	fconfigure $s -buffering line	fileevent $s readable [list echo $s]    }    proc echo {s} {	global x        set l [gets $s]        if {[eof $s]} {            close $s            set x done        } else {            puts $s $l        }    }    set t1 [after 30000 "set x timed_out"]    set t2 [after 31000 "set x timed_out"]    set t3 [after 32000 "set x timed_out"]    set s [socket -server accept 0]    set listen [lindex [fconfigure $s -sockname] 2]    puts $p1 $listen    puts $p2 $listen    puts $p3 $listen    vwait x    vwait x    vwait x    after cancel $t1    after cancel $t2    after cancel $t3    close $s    set l ""    lappend l [list p1 [gets $p1] $x]    lappend l [list p2 [gets $p2] $x]    lappend l [list p3 [gets $p3] $x]    puts $p1 bye    puts $p2 bye    puts $p3 bye    close $p1    close $p2    close $p3    set l} {{p1 bye done} {p2 bye done} {p3 bye done}}test socket-4.2 {byte order problems, socket numbers, htons} {socket} {    set x ok    if {[catch {socket -server dodo 0x3000} msg]} {	set x $msg    } else {	close $msg    }    set x} oktest socket-5.1 {byte order problems, socket numbers, htons} \	{socket unixOnly notRoot} {    set x {couldn't open socket: not owner}    if {![catch {socket -server dodo 0x1} msg]} {        set x {htons problem, should be disallowed, are you running as SU?}	close $msg    }    set x} {couldn't open socket: not owner}test socket-5.2 {byte order problems, socket numbers, htons} {socket} {    set x {couldn't open socket: port number too high}    if {![catch {socket -server dodo 0x10000} msg]} {	set x {port resolution problem, should be disallowed}	close $msg    }    set x} {couldn't open socket: port number too high}test socket-5.3 {byte order problems, socket numbers, htons} \	{socket unixOnly notRoot} {    set x {couldn't open socket: not owner}    if {![catch {socket -server dodo 21} msg]} {	set x {htons problem, should be disallowed, are you running as SU?}	close $msg    }    set x} {couldn't open socket: not owner}test socket-6.1 {accept callback error} {socket stdio} {    removeFile script    set f [open $path(script) w]    puts $f {	gets stdin port	socket 127.0.0.1 $port    }    close $f    set f [open "|[list [interpreter] $path(script)]" r+]    proc bgerror args {	global x	set x $args    }    proc accept {s a p} {expr 10 / 0}    set s [socket -server accept 0]    puts $f [lindex [fconfigure $s -sockname] 2]    close $f    set timer [after 10000 "set x timed_out"]    vwait x    after cancel $timer    close $s    rename bgerror {}    set x} {{divide by zero}}test socket-7.1 {testing socket specific options} {socket stdio} {    removeFile script    set f [open $path(script) w]    puts $f {	set ss [socket -server accept 0]	proc accept args {	    global x	    set x done	}	puts ready	puts [lindex [fconfigure $ss -sockname] 2]	set timer [after 10000 "set x timed_out"]	vwait x	after cancel $timer    }    close $f    set f [open "|[list [interpreter] $path(script)]" r]    gets $f    gets $f listen    set s [socket 127.0.0.1 $listen]    set p [fconfigure $s -peername]    close $s    close $f    set l ""    lappend l [string compare [lindex $p 0] 127.0.0.1]    lappend l [string compare [lindex $p 2] $listen]    lappend l [llength $p]} {0 0 3}test socket-7.2 {testing socket specific options} {socket stdio} {    removeFile script    set f [open $path(script) w]    puts $f {	set ss [socket -server accept 2821]	proc accept args {	    global x	    set x done	}	puts ready	puts [lindex [fconfigure $ss -sockname] 2]	set timer [after 10000 "set x timed_out"]	vwait x	after cancel $timer    }    close $f    set f [open "|[list [interpreter] $path(script)]" r]    gets $f    gets $f listen    set s [socket 127.0.0.1 $listen]    set p [fconfigure $s -sockname]    close $s    close $f    list [llength $p] \	    [regexp {^(127\.0\.0\.1|0\.0\.0\.0)$} [lindex $p 0]] \	    [expr {[lindex $p 2] == $listen}]} {3 1 0}test socket-7.3 {testing socket specific options} {socket} {    set s [socket -server accept 0]    set l [fconfigure $s]    close $s    update    llength $l} 14test socket-7.4 {testing socket specific options} {socket} {    set s [socket -server accept 0]    proc accept {s a p} {	global x	set x [fconfigure $s -sockname]	close $s    }    set listen [lindex [fconfigure $s -sockname] 2]    set s1 [socket [info hostname] $listen]    set timer [after 10000 "set x timed_out"]    vwait x    after cancel $timer    close $s    close $s1    set l ""    lappend l [expr {[lindex $x 2] == $listen}] [llength $x]} {1 3}test socket-7.5 {testing socket specific options} {socket unixOrPc} {    set s [socket -server accept 0]    proc accept {s a p} {	global x	set x [fconfigure $s -sockname]	close $s    }    set listen [lindex [fconfigure $s -sockname] 2]    set s1 [socket 127.0.0.1 $listen]    set timer [after 10000 "set x timed_out"]    vwait x    after cancel $timer    close $s    close $s1    set l ""    lappend l [lindex $x 0] [expr {[lindex $x 2] == $listen}] [llength $x]} {127.0.0.1 1 3}test socket-8.1 {testing -async flag on sockets} {socket} {    # NOTE: This test may fail on some Solaris 2.4 systems. If it does,    # check that you have these patches installed (using showrev -p):    #    # 101907-05, 101925-02, 101945-14, 101959-03, 101969-05, 101973-03,    # 101977-03, 101981-02, 101985-01, 102001-03, 102003-01, 102007-01,    # 102011-02, 102024-01, 102039-01, 102044-01, 102048-01, 102062-03,    # 102066-04, 102070-01, 102105-01, 102153-03, 102216-01, 102232-01,    # 101878-03, 101879-01, 101880-03, 101933-01, 101950-01, 102030-01,    # 102057-08, 102140-01, 101920-02, 101921-09, 101922-07, 101923-03    #    # If after installing these patches you are still experiencing a    # problem, please email jyl@eng.sun.com. We have not observed this    # failure on Solaris 2.5, so another option (instead of installing    # these patches) is to upgrade to Solaris 2.5.    set s [socket -server accept 0]    proc accept {s a p} {	global x	puts $s bye	close $s	set x done    }    set s1 [socket -async [info hostname] [lindex [fconfigure $s -sockname] 2]]    vwait x    set z [gets $s1]    close $s    close $s1    set z} byetest socket-9.1 {testing spurious events} {socket} {    set len 0    set spurious 0    set done 0    proc readlittle {s} {	global spurious done len	set l [read $s 1]	if {[string length $l] == 0} {	    if {![eof $s]} {		incr spurious	    } else {		close $s		set done 1	    }	} else {	    incr len [string length $l]	}    }    proc accept {s a p} {	fconfigure $s -buffering none -blocking off	fileevent $s readable [list readlittle $s]    }    set s [socket -server accept 0]    set c [socket [info hostname] [lindex [fconfigure $s -sockname] 2]]    puts -nonewline $c 01234567890123456789012345678901234567890123456789    close $c    set timer [after 10000 "set done timed_out"]    vwait done    after cancel $timer    close $s    list $spurious $len} {0 50}test socket-9.2 {testing async write, fileevents, flush on close} {socket} {    set firstblock ""    for {set i 0} {$i < 5} {incr i} {set firstblock "a$firstblock$firstblock"}    set secondblock ""    for {set i 0} {$i < 16} {incr i} {	set secondblock "b$secondblock$secondblock"    }    set l [socket -server accept 0]    proc accept {s a p} {	fconfigure $s -blocking 0 -translation lf -buffersize 16384 \		-buffering line	fileevent $s readable "readable $s"    }    proc readable {s} {	set l [gets $s]	fileevent $s readable {}	after 1000 respond $s    }    proc respond {s} {	global firstblock	puts -nonewline $s $firstblock	after 1000 writedata $s    }    proc writedata {s} {	global secondblock	puts -nonewline $s $secondblock	close $s    }    set s [socket [info hostname] [lindex [fconfigure $l -sockname] 2]]    fconfigure $s -blocking 0 -trans lf -buffering line    set count 0    puts $s hello    proc readit {s} {	global count done	set l [read $s]	incr count [string length $l]	if {[eof $s]} {	    close $s	    set done 1	}    }    fileevent $s readable "readit $s"    set timer [after 10000 "set done timed_out"]    vwait done    after cancel $timer    close $l    set count} 65566test socket-9.3 {testing EOF stickyness} {socket} {    proc count_to_eof {s} {	global count done timer	set l [gets $s]	if {[eof $s]} {	    incr count	    if {$count > 9} {		close $s		set done true		set count {eof is sticky}		after cancel $timer	    }	}    }    proc timerproc {} {	global done count c	set done true	set count {timer went off, eof is not sticky}	close $c    }	    set count 0    set done false    proc write_then_close {s} {	puts $s bye	close $s    }    proc accept {s a p} {	fconfigure $s -buffering line -translation lf	fileevent $s writable "write_then_close $s"    }    set s [socket -server accept 0]    set c [socket [info hostname] [lindex [fconfigure $s -sockname] 2]]    fconfigure $c -blocking off -buffering line -translation lf    fileevent $c readable "count_to_eof $c"    set timer [after 1000 timerproc]    vwait done    close $s    set count} {eof is sticky}removeFile scripttest socket-10.1 {testing socket accept callback error handling} {socket} {    set goterror 0    proc bgerror args {global goterror; set goterror 1}    set s [socket -server accept 0]    proc accept {s a p} {close $s; error}    set c [socket 127.0.0.1 [lindex [fconfigure $s -sockname] 2]]    vwait goterror    close $s    close $c    set goterror} 1test socket-11.1 {tcp connection} {socket doTestsWithRemoteServer} {    sendCommand {	set socket9_1_test_server [socket -server accept 2834]	proc accept {s a p} {	    puts $s done	    close $s	}    }    set s [socket $remoteServerIP 2834]    set r [gets $s]    close $s    sendCommand {close $socket9_1_test_server}    set r} donetest socket-11.2 {client specifies its port} {socket doTestsWithRemoteServer} {    if {[info exists port]} {	incr port    } else {	set port [expr 2048 + [pid]%1024]    }    sendCommand {	set socket9_2_test_server [socket -server accept 2835]	proc accept {s a p} {	    puts $s $p	    close $s	}    }    set s [socket -myport $port $remoteServerIP 2835]    set r [gets $s]    close $s    sendCommand {close $socket9_2_test_server}    if {$r == $port} {	set result ok    } else {	set result broken    }    set result} oktest socket-11.3 {trying to connect, no server} {socket doTestsWithRemoteServer} {    set status ok    if {![catch {set s [socket $remoteServerIp 2836]}]} {	if {![catch {gets $s}]} {	    set status broken	}	close $s    }    set status} oktest socket-11.4 {remote echo, one line} {socket doTestsWithRemoteServer} {    sendCommand {	set socket10_6_test_server [socket -server accept 2836]	proc accept {s a p} {	    fileevent $s readable [list echo $s]	    fconfigure $s -buffering line -translation crlf	}	proc echo {s} {	    set l [gets $s]	    if {[eof $s]} {		close $s	    } else {		puts $s $l	    }	}    }    set f [socket $remoteServerIP 2836]    fconfigure $f -translation crlf -buffering line    puts $f hello    set r [gets $f]    close $f    sendCommand {close $socket10_6_test_server}    set r} hellotest socket-11.5 {remote echo, 50 lines} {socket doTestsWithRemoteServer} {    sendCommand {	set socket10_7_test_server [socket -server accept 2836]	proc accept {s a p} {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -