Posted to tcl by Bradipo at Mon Jul 29 00:39:19 GMT 2024view raw
- proc readbytes {chan n b} {
- puts stdout "[clock format [clock seconds]]\
- readbytes $chan $n [binary encode hex $b]"
- if {[string length $b] == 2} {
- fileevent $chan readable [list readmorebytes $chan $n $b]
- } else {
- if {[eof $chan]} {
- fileevent $chan readable {}
- catch {close $chan}
- puts stderr "short read readbytes"
- } else {
- append b [read $chan 1]
- fileevent $chan readable [list readbytes $chan $n $b]
- }
- }
- }
- proc readmorebytes {chan n b} {
- puts stdout "[clock format [clock seconds]]\
- readmorebytes $chan $n [binary encode hex $b]"
- if {[string length $b] == $n} {
- fileevent $chan readable {}
- catch {close $chan}
- puts stdout "[clock format [clock seconds]]\
- got $n bytes [binary encode hex $b]"
- } else {
- if {[eof $chan]} {
- fileevent $chan readable {}
- catch {close $chan}
- puts stderr "short read readmorebytes"
- } else {
- append b [read $chan 1]
- fileevent $chan readable [list readmorebytes $chan $n $b]
- }
- }
- }
- proc doreceive {} {
- set fd [open /dev/urandom rb]
- fconfigure $fd -translation binary -blocking 0
- fileevent $fd readable [list readbytes $fd 8 ""]
- }
- proc receive {} {
- puts stdout "[clock format [clock seconds]] starting receive"
- doreceive
- puts stdout "[clock format [clock seconds]] rescheduling receive"
- after 10000 receive
- }
- receive
- ------------------------------------------------------------------------
- Sun Jul 28 18:38:55 MDT 2024 starting receive
- Sun Jul 28 18:38:55 MDT 2024 rescheduling receive
- Sun Jul 28 18:38:55 MDT 2024 readbytes file4 8
- Sun Jul 28 18:38:55 MDT 2024 readbytes file4 8 7c
- Sun Jul 28 18:38:55 MDT 2024 readbytes file4 8 7cef
- Sun Jul 28 18:38:55 MDT 2024 readmorebytes file4 8 7cef
- Sun Jul 28 18:38:55 MDT 2024 readmorebytes file4 8 7cef86
- Sun Jul 28 18:38:55 MDT 2024 readmorebytes file4 8 7cef8663
- Sun Jul 28 18:38:55 MDT 2024 readmorebytes file4 8 7cef8663a9
- Sun Jul 28 18:38:55 MDT 2024 readmorebytes file4 8 7cef8663a9d8
- Sun Jul 28 18:38:55 MDT 2024 readmorebytes file4 8 7cef8663a9d8bf
- Sun Jul 28 18:38:55 MDT 2024 readmorebytes file4 8 7cef8663a9d8bff5
- Sun Jul 28 18:38:55 MDT 2024 got 8 bytes 7cef8663a9d8bff5