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 > _______________________________________________ Users-prolog mailing list [email protected] https://lists.gnu.org/mailman/listinfo/users-prolog
