Добрый день!
Появилась такая проблема. Обмен работает какое-то время, но потом перестает!
Посмотрел, все крутится в цикле: SERVER_STATE_CREATE - SERVER_STATE_BIND - SERVER_STATE_CLOSE
Вот код:
Код:
CASE eState OF
SERVER_STATE_CREATE:
hServerSocket := SysSockCreate( SOCKET_AF_INET, SOCKET_STREAM, SOCKET_IPPROTO_TCP );
IF hServerSocket <> SOCKET_INVALID THEN
SysSockSetOption(hServerSocket, SOCKET_SOL, c_diSoNbio, ADR(diOption), SIZEOF(diOption) );
eState := SERVER_STATE_BIND;
ELSE
eState := SERVER_STATE_CLOSE;
END_IF
SERVER_STATE_BIND:
stServerSettings.sin_family := SOCKET_AF_INET;
stServerSettings.sin_addr := SysSockHtonl(SOCKET_INADDR_ANY);
stServerSettings.sin_port := SysSockHtons(wPort);
xBinded := SysSockBind(hServerSocket, ADR(stServerSettings), SIZEOF(stServerSettings) );
IF xBinded THEN eState := SERVER_STATE_LISTEN;
ELSE eState := SERVER_STATE_CLOSE;
END_IF
SERVER_STATE_LISTEN:
xListened := SysSockListen(hServerSocket, INT_TO_DINT(c_iMaxConnections) );
IF xListened THEN eState := SERVER_STATE_ACCEPT;
ELSE eState := SERVER_STATE_CLOSE;
END_IF
SERVER_STATE_CLOSE:
SysSockShutdown(hServerSocket, c_diHow);
SysSockClose(hServerSocket);
hServerSocket := SOCKET_INVALID;
eState := SERVER_STATE_CREATE;