서버가 무한 루프에 빠지면 언젠가 서버 연결을 어떻게 닫을 수 있습니까? 대답은 아무 문제없이 서버에 의해 주어진 경우 위의 코드가 작동얼마 후 소켓 시간 초과
set s [socket $host $port]
fconfigure $s -blocking 1 -buffering line
after 2000 set end 1
vwait end
if { $s != "" } {
puts -nonewline $s "$msg\n.\n"
flush $s
fileevent $s readable [set answer [read $s]]
puts "$answer"
if {[catch {close $s}]} {
puts "Server hanged"
}
: 여기
내가 노력하고있는 코드입니다. 서버가 무한 루프가되면read $s
에 매달려 있습니다. 이
read socket
을 비 차단 모드로 처리하는 방법에 대한 도움말은
fconfigure
과 같습니다.
지금 당장은 대답이 없지만, 'fileevent'를 호출하는 방법은 콜백 스크립트로 [set answer [read $ s]]를 설치하지 않습니다. 그 대신 호출 중에 그 액션 (소켓에서 읽기를 시도하고 결과를'answer'에 할당)을 수행하고 소켓에서 읽은 것을 콜백 스크립트로 설정합니다. 이것은 콜백 스크립트가 의도 한 바 일 가능성이 거의 없습니다. –
시간 초과가 발생했습니다. – xrcwrn