Comment 2 for bug 525050

Revision history for this message
Ugo (ugo-computer) wrote : Re: [Bug 525050] Re: tcp-connect fails under cygwin

Thanks for the feedback, Marco.

The server is listening before the client starts.

Your code fails as well.

Cheers, Ugo

On Sun, Feb 21, 2010 at 8:57 AM, Marco Maggi <email address hidden> wrote:

> Disclaimer: I am no user of Cygwin.
>
> Sorry to test you for stupid things... Unfortunately it seems there is
> no way to distinguish between a "failed to resolve" and a "failed to
> connect" error; are you sure that the server is already listening when
> the client connects? Does the following fail, too?
>
> (import (rnrs)
> (ikarus))
>
> (define SERVER-HOST "127.0.0.1")
> (define SERVICE-PORT "8080")
>
> (fork (lambda (child-pid)
> (display "server started\n")
> (let ((listener
> (tcp-server-socket (string->number SERVICE-PORT))))
> (display "server is listening\n")
> (let-values ([(client->me me->client)
> (accept-connection listener)])
> (display "server accepted connection\n")
> (exit))))
> (lambda ()
> (display "client started\n")
> (nanosleep 2 0)
> (display "client is connecting...\n")
> (let-values ([(server->me me->server)
> (tcp-connect SERVER-HOST SERVICE-PORT)])
> (display "client is connected\n")
> (exit))))
>
> --
> tcp-connect fails under cygwin
> https://bugs.launchpad.net/bugs/525050
> You received this bug notification because you are a direct subscriber
> of the bug.
>
> Status in Ikarus Scheme: New
>
> Bug description:
> Hi,
>
> tcp-connect fails with the following under cygwin (XP):
>
> Unhandled exception:
> Condition components:
> 1. &assertion
> 2. &who: tcp-connect
> 3. &message: "failed to resolve host name or connect"
> 4. &irritants: ("127.0.0.1" "1000")
>
> I'm using the latest dev snapshot. I've used the 2 simple programs below
> for test. They work fine on my Linux box.
>
> Thank you.
>
> Cheers, Ugo
>
> == Client code ==
>
> #!/usr/bin/env scheme-script
> (import (rnrs)
> (rnrs base)
> (rnrs bytevectors)
> (rnrs unicode)
> (rnrs io ports)
> (ikarus ipc)
> (rnrs syntax-case))
>
> (define SERVER-HOST "127.0.0.1")
> (define SERVICE-PORT "1000")
>
>
> (define SOH-CHAR #x01)
> (define VERSION-NUMBER #b1)
>
>
> (define (client)
> (let-values ([(server->me me->server)
> (tcp-connect SERVER-HOST SERVICE-PORT)])
> (display "writing to server") (newline)
> (put-u8 me->server 1) ; 'SOH' Character
> (put-u8 me->server 1) ; Version Number
> (put-bytevector me->server #vu8(00 00))
> (put-bytevector me->server #vu8(00 05))
>
> (close-output-port me->server)
> (display "reading from server ...") (newline)
> (let ([res-header (get-bytevector-n server->me 13)])
> (close-input-port server->me))))
>
> (client)
>
> == Server code ==
>
> #!/usr/bin/env scheme-script
> (import (rnrs)
> (rnrs bytevectors)
> (rnrs io ports)
> (ikarus ipc))
>
> (define SERVICE-PORT 1000)
>
> (define (server)
> (let ([listener (tcp-server-socket SERVICE-PORT)])
> (let-values ([(client->me me->client)
> (accept-connection listener)])
> (display (get-bytevector-n client->me 4))
> (put-u8 me->client 111)
> (close-output-port me->client)
> (close-input-port client->me))))
>
> (server)
>
> To unsubscribe from this bug, go to:
> https://bugs.launchpad.net/ikarus/+bug/525050/+subscribe
>