You can't do "puts -nonewline" on one side and then "gets" on the other. It will hang forever waiting for the newline to come through. That's what gets does. It reads up to the newline character.
And since you didn't put the socket in non-blocking mode, the gets will block, waiting forever for a newline that will never come. Poor little gets. If you add -blocking 0, gets will return immediately but with no data because it tried to get a line and still never found a newline. If you don't want to use newlines, or you want to send binary data, you need to use read to get at the data. It will read everything in the buffer, and since you have -buffering none, that will be everything you sent. The better idea would be to do this: fconfigure $s -buffering full puts -nonewline $s $data flush $s Unless you're trying to stream something bit-by-bit, that will buffer all your data (up to the size of the socket buffer), and then flush will push it all out at once. But Massimo is right, your gets is waiting on a newline. D On Aug 17, 2013, at 9:31 AM, Brice Hamon <normandvik...@gmail.com> wrote: > Hi all, > > I am facing a unexpected problem with such simple code in Rivet: > I open a socket to an echo server, send something and wait for the answer. > > I open the socket like that: > > set port 20445 > set host "toto2" > set s 0 > > proc connectToBs {} { > ::request::global s > ::request::global port > ::request::global host > > set s [socket $host $port] > puts "Connected to $host:$port" > fconfigure $s -buffering none > fconfigure $s -translation binary > } > > Then: > > connectToBs > puts -nonewline $s "OKOK" > set resp {} > gets $s resp <=== and I am getting stuck in the gets forever. > > The same code under a regular tclsh works. I don't get it. > > I am using the native TCL8.5.10 from SUSE 12.1 with Rivet 2.1.2. > > Any idea? > > Thanks, > Brice. --------------------------------------------------------------------- To unsubscribe, e-mail: rivet-dev-unsubscr...@tcl.apache.org For additional commands, e-mail: rivet-dev-h...@tcl.apache.org