portal Michała Hanćkowiaka
Begin main content
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

uwaga: portal używa ciasteczek tylko do obsługi tzw. sesji...