[gambit-list] I/O Question
Marc Feeley
feeley at iro.umontreal.ca
Thu May 1 23:00:52 EDT 2008
On 1-May-08, at 7:21 PM, Francisco wrote:
> Oh thank you! And what about if want to do it on a network socket, I
> want to parse the input until a char is found, or until the end of
> the available input, but according to that input I need to respond
> using the same socket
> How do I do that?
You don't need to do anything special. The thread will block when the
socket's buffer is empty (waiting for more data to come or the
connection to be closed). You won't get a deadlock because the
scheduler considers it is possible that the process at the other end
of the connection will send more data later.
By the way, if you want to read text until a certain character you can
use read-line and specify the character as the second parameter (it
defaults to #\newline). Here are some examples:
> (read-line (open-input-string "hello world\nhow are you?\n"))
"hello world"
> (read-line (open-input-string "hello world\nhow are you?\n") #\space)
"hello"
> (define (split str sep)
(read-all (open-input-string str)
(lambda (p) (read-line p sep))))
> (split "this is a sentence" #\space)
("this" "is" "a" "sentence")
Marc
More information about the Gambit-list
mailing list