Re: scsh vs. scheme48 socket
Martin Gasbichler <[email protected]> Mon, 19 Dec 2005 09:09:07 +0100
| Newsgroups | gmane.lisp.scheme.scsh |
|---|---|
| Message-ID | <[email protected]> |
Immanuel Normann <[email protected]> writes: > Martin Gasbichler wrote: > >>Immanuel Normann <[email protected]> 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