Hi,
I’m working on a project that uses a (listening) socket.
Sometimes when the client disconnects and I recreate the listening socket I get an error like:
41600: Socket error
Description
Task: Networking
The specified client socket is already in use. The client socket must not be created before calling SocketAccept.
Program Ref. /Networking/createListeningSocket/SocketAccept/272
I’m wondering if there is a safe way to completely destroy all sockets so I can call the SocketCreate, SocketAccept functions when I catch an “ERROR”. ?
The relevant code is this;
PROC createListeningSocket()
server_ss:=SocketGetStatus(server_socket);
IF server_ss<>SOCKET_CREATED THEN
SocketCreate server_socket;
SocketBind server_socket,“127.0.0.1”,1025;
SocketListen server_socket;
SocketAccept server_socket,client_socket \Time:=WAIT_MAX;
TPWrite “Accepted a new connection”;
server_created:=TRUE;
drawing_ready:=FALSE;
state:=“r”;
server_ok:=TRUE;
TPWrite "SocketStatus: "+ValToStr(server_ss);
ENDIF
client_ss:=SocketGetStatus(client_socket);
IF client_ss=SOCKET_CREATED THEN
TPWrite “Client socket already created.”;
ELSEIF client_ss=SOCKET_CONNECTED THEN
TPWrite “Client socket connected”;
ELSE
TPWrite "Unhandled socket state: "+ValToStr(client_ss);
ENDIF
…
Any ideas how I can solve this?
p.