scsh-users
[Top] [All Lists]

Re: scsh vs. scheme48 socket

To: Immanuel Normann <i.normann@iu-bremen.de>
Subject: Re: scsh vs. scheme48 socket
From: Martin Gasbichler <gasbichl@informatik.uni-tuebingen.de>
Date: Mon, 19 Dec 2005 09:09:07 +0100
Cc: scsh-users@scsh.net
List-id: <scsh-users.list-id.scsh.net>
Immanuel Normann <i.normann@iu-bremen.de> writes:

> Martin Gasbichler wrote:
>
>>Immanuel Normann <i.normann@iu-bremen.de> writes:
>
>>Could you please post the scsh program as well as the error message
>>you get?
>>
>>
> Take it simply as it is:
>
>  > ,open sockets extended-ports
>
>  > (define (ask-server request port-number)
>   (call-with-values
>     (lambda ()
>       (socket-client (get-host-name) port-number))
>     (lambda (in out)
>        (display request out)
>        (close-output-port out)
>        (let ((answer (make-string-input-port in))) ; returns any
>        server response into some string
>       (close-input-port in)
>       answer))))
>
>  > (ask-server "something" 8080)

Ah, so you're using the S48-API within scsh. The problems you see are
maybe due to bugs in the S48 version that scsh is based on. 

> Anyway, how would I solve the task in scsh with its elaborated socket
> functions?

Well, just use the first procedure described in the scsh network API:

(define (ask-server request host-name port-number)
  (let ((socket (socket-connect protocol-family/internet 
                                socket-type/stream 
                                host-name 
                                port-number)))
    (display request (socket:outport socket)) ;; maybe you have to add NEWLINE 
here 
    (let ((answer (make-string-input-port (socket:inport socket))))
      (close-socket socket)
      answer)))

[Untested code]

-- 
Martin

<Prev in Thread] Current Thread [Next in Thread>