wm withdraw .; wm withdraw .output wm geo .konsola 786x622+575+18; kons_font 11; # tahr ## ustawianie TOS w gniazdku w j Tcl ?, 29.01.2021 # + obecnie to nie TOS tylko "DiffServ field" i "ECN"... # + sockopt_lib.so zawiera: fileno, getsockopt_tos, setsockopt_tos # + inne niz tos op *sockopt robic przez ffidl, patrz sockopt01.tcl # + nowa wersja fileno DZIALA z socketami udp !!! 31.01.2021 # + tcl api docs; Tcl_GetChannel i Tcl_GetChannelHandle # http://www.tcl.tk/man/tcl8.6/TclLib/OpenFileChnl.htm # http://www.tcl.tk/man/tcl8.6/TclLib/CrtChannel.htm # + potrzebna wersja win: sockopt_lib.dll ! # + getsockopt_tos: powinien byc msg na stderr w razie bledu !! # load ./sockopt_lib.so fileno "qqq" #% -1 fileno "stdin" #% 0 fileno "stdout" #% 1 fileno "stderr" #% 2 set s [socket 150.254.78.111 20002] #% sock980cee8 set desk [fileno $s] #% 7 # + pobranie desk socketu... fconfigure $s -blocking 0 puts $s "GET / HTTP/1.1"; flush $s puts $s "Host: 150.254.78.111:20002"; flush $s puts $s "qqq: 1234444"; flush $s # + mozna obserwowac przez wireshark zmodyf bity tos... setsockopt_tos $desk 0b00000000 #% 0 setsockopt_tos $desk 0b00110000 #% 0 #% 0 # ^ starsze 6bitow to "ds field", mlodsze 2bity to "ecn" format %08b [getsockopt_tos $desk] #% 00010000 #% 00000000 getsockopt_tos 0 #% -1 # + jest msg na stderr setsockopt_tos 0 0 #% 88 # + to jest wartosc errno; jest tez msg na stderr # ... # czy fileno dziala dla socketow udp ? odp: TAK!! # lappend auto_path ~/tcl/111/000_lupu/udp1.0.11/ lappend auto_path ~/tcl/000/udp1.0.11/ package re udp #% 1.0.11 set u1 [udp_open 10000] #% sock8 set u1_desk [fileno $u1] #% 8 setsockopt_tos $u1_desk 0b00000000 #% 0 setsockopt_tos $u1_desk 0b01110000 # ^ starsze 6bitow to "ds field", mlodsze 2bity to "ecn" format %08b [getsockopt_tos $u1_desk] #% 01110000 fconfigure $u1 #% -blocking 1 -buffering full -buffersize 4096 -encoding utf-8 -eofchar {{} {}} -translation {auto lf} -myport 10000 -remote {} -peer {} -mcastgroups {} -mcastloop 1 -broadcast 0 -ttl 64 -sendsize 0 fconfigure $u1 -remote {150.254.78.111 20002} #% 150.254.78.111 20002 puts $u1 "qqq"; flush $u1 # + widac efekty przez wireshark... # ... exit