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

📄 socket.test

📁 linux系统下的音频通信
💻 TEST
📖 第 1 页 / 共 3 页
字号:
    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 2832]    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] 2832]    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} {    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 2833]    set c [socket [info hostname] 2833]    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}test socket-10.1 {testing socket accept callback error handling} {    set goterror 0    proc bgerror args {global goterror; set goterror 1}    set s [socket -server accept 2898]    proc accept {s a p} {close $s; error}    set c [socket localhost 2898]    vwait goterror    close $s    close $c    set goterror} 1removeFile script## The rest of the tests are run only if we are doing testing against# a remote server.#if {$doTestsWithRemoteServer == 0} {    return}test socket-11.1 {tcp connection} {    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} {    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} {    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} {    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} {    sendCommand {	set socket10_7_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    for {set cnt 0} {$cnt < 50} {incr cnt} {	puts $f "hello, $cnt"	if {[string compare [gets $f] "hello, $cnt"] != 0} {	    break	}    }    close $f    sendCommand {close $socket10_7_test_server}    set cnt} 50# Macintosh sockets can have more than one server per portif {$tcl_platform(platform) == "macintosh"} {    set conflictResult {0 2836}} else {    set conflictResult {1 {couldn't open socket: address already in use}}}test socket-11.6 {socket conflict} {    set s1 [socket -server accept 2836]    if {[catch {set s2 [socket -server accept 2836]} msg]} {	set result [list 1 $msg]    } else {	set result [list 0 [lindex [fconfigure $s2 -sockname] 2]]	close $s2    }    close $s1    set result} $conflictResulttest socket-11.7 {server with several clients} {    sendCommand {	set socket10_9_test_server [socket -server accept 2836]	proc accept {s a p} {	    fconfigure $s -buffering line	    fileevent $s readable [list echo $s]	}	proc echo {s} {	    set l [gets $s]	    if {[eof $s]} {		close $s	    } else {		puts $s $l	    }	}    }    set s1 [socket $remoteServerIP 2836]    fconfigure $s1 -buffering line    set s2 [socket $remoteServerIP 2836]    fconfigure $s2 -buffering line    set s3 [socket $remoteServerIP 2836]    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    sendCommand {close $socket10_9_test_server}    set i} 100    test socket-11.8 {client with several servers} {    sendCommand {	set s1 [socket -server "accept 4003" 4003]	set s2 [socket -server "accept 4004" 4004]	set s3 [socket -server "accept 4005" 4005]	proc accept {mp s a p} {	    puts $s $mp	    close $s	}    }    set s1 [socket $remoteServerIP 4003]    set s2 [socket $remoteServerIP 4004]    set s3 [socket $remoteServerIP 4005]    set l ""    lappend l [gets $s1] [gets $s1] [eof $s1] [gets $s2] [gets $s2] [eof $s2] \	[gets $s3] [gets $s3] [eof $s3]    close $s1    close $s2    close $s3    sendCommand {	close $s1	close $s2	close $s3    }    set l} {4003 {} 1 4004 {} 1 4005 {} 1}test socket-11.9 {accept callback error} {    set s [socket -server accept 2836]    proc accept {s a p} {expr 10 / 0}    proc bgerror args {	global x	set x $args    }    if {[catch {sendCommand {	    set peername [fconfigure $callerSocket -peername]	    set s [socket [lindex $peername 0] 2836]	    close $s    	 }} msg]} {	close $s	error $msg    }    set timer [after 10000 "set x timed_out"]    vwait x    after cancel $timer    close $s    rename bgerror {}    set x} {{divide by zero}}test socket-11.10 {testing socket specific options} {    sendCommand {	set socket10_12_test_server [socket -server accept 2836]	proc accept {s a p} {close $s}    }    set s [socket $remoteServerIP 2836]    set p [fconfigure $s -peername]    set n [fconfigure $s -sockname]    set l ""    lappend l [lindex $p 2] [llength $p] [llength $p]    close $s    sendCommand {close $socket10_12_test_server}    set l} {2836 3 3}test socket-11.11 {testing spurious events} {    sendCommand {	set socket10_13_test_server [socket -server accept 2836]	proc accept {s a p} {	    fconfigure $s -translation "auto lf"	    after 100 writesome $s	}	proc writesome {s} {	    for {set i 0} {$i < 100} {incr i} {		puts $s "line $i from remote server"	    }	    close $s	}    }    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]	}    }    set c [socket $remoteServerIP 2836]    fileevent $c readable "readlittle $c"    set timer [after 10000 "set done timed_out"]    vwait done    after cancel $timer    sendCommand {close $socket10_13_test_server}    list $spurious $len} {0 2690}test socket-11.12 {testing EOF stickyness} {    set counter 0    set done 0    proc count_up {s} {	global counter done after_id	set l [gets $s]	if {[eof $s]} {	    incr counter	    if {$counter > 9} {		set done {EOF is sticky}		after cancel $after_id		close $s	    }	}    }    proc timed_out {} {	global c done	set done {timed_out, EOF is not sticky}	close $c    }    sendCommand {	set socket10_14_test_server [socket -server accept 2836]	proc accept {s a p} {	    after 100 close $s	}    }    set c [socket $remoteServerIP 2836]    fileevent $c readable "count_up $c"    set after_id [after 1000 timed_out]    vwait done    sendCommand {close $socket10_14_test_server}    set done} {EOF is sticky}test socket-11.13 {testing async write, async flush, async close} {    proc readit {s} {	global count done	set l [read $s]	incr count [string length $l]	if {[eof $s]} {	    close $s	    set done 1	}    }    sendCommand {	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 2845]	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 $remoteServerIP 2845]    fconfigure $s -blocking 0 -trans lf -buffering line    set count 0    puts $s hello    fileevent $s readable "readit $s"    set timer [after 10000 "set done timed_out"]    vwait done    after cancel $timer    sendCommand {close $l}    set count} 65566if {[string match sock* $commandSocket] == 1} {   puts $commandSocket exit   flush $commandSocket}catch {close $commandSocket}catch {close $remoteProcChan}set x ""unset x

⌨️ 快捷键说明

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