Re: Socket woes...
Sean Charles <[email protected]>
| Newsgroups | gmane.comp.gnu.prolog.general |
|---|---|
| Message-ID | <[email protected]> |
Hi Salvador, Thanks for that reply. I had a read and it bears out what I experience; if I "wait" long enough then the problem does go away…it was not long before I realised that just terminating the Emacs prolog session and re-compiling into a new one wasn't the silver bullet! To avoid such issues I now just use a range of ports instead, 10000, 100001 etc etc….running from a terminal window it's day! :) Thanks Sean On 20 Jul 2013, at 23:44, Salvador Pinto Abreu <[email protected]> wrote: > i think sockets are not immediately closed by the OS, so you can't bind to the same port right after closing it. > > see http://lists.gnu.org/archive/html/users-prolog/2004-07/msg00007.html > > one thing which could help is to add a foreign function interface to setsockopt(2) which would set the SO_REUSEPORT on the socket, before doing the bind. > > -salvador > > On Jul 20, 2013, at 23h08, Sean Charles <[email protected]> wrote: > >> Using this code to start and stop a session: >> >> session_start(Port) :- >> socket('AF_INET', S), >> socket_bind(S, 'AF_INET'(localhost, Port)), >> socket_listen(S, 0), >> socket_accept(S, Client, In, Out), >> format(Out, "~n~n>> Welcome to SKYNET, ~w~n", [Client]), >> cmd_loop(In, Out), >> close(In),close(Out),socket_close(S), >> format("Clean close~n", []). >> >> I've done lots of socket coding with PHP and C/C++ and usually the safest bet is to get the client to terminate the connection first to avoid and issues within the TCP driver regarding wait states and things but being new to prolog still I wonder if I've done something silly in my code that I can't see? >> >> I am using telnet to connect, all foes well until I type "bye". The program terminates, tells me it was a clean close but when I try to run again: >> >> session_start(10000). >> uncaught exception: error(system_error('Address already in use'),socket_bind/2) >> >> Bummer. >> >> Any suggestions? >> >> _______________________________________________ >> Users-prolog mailing list >> [email protected] >> https://lists.gnu.org/mailman/listinfo/users-prolog >