Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / ? Winsock.state продолжает возвращать 7 при отключения сервера / 2 сообщений из 2, страница 1 из 1
10.05.2007, 09:03
    #34515204
Akarak2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
? Winsock.state продолжает возвращать 7 при отключения сервера
на клиенте делаю при создании объекта соединение This.winsock.Object.Connect(Ip,Port)
если сервер в этот момент не в сети, то nState=thisform.spisok.nomer1.Winsock.state
nState<>7
если сервер в сети, то
nState=7
Если после этого сервер выпадает из сети, то проверка nState=thisform.spisok.nomer1.Winsock.state, должна вернуть что-то отличное от 7,
но почемуто продолжает возвращать 7.
Как можно обойти эти грабли?
...
Рейтинг: 0 / 0
10.05.2007, 21:35
    #34517658
oleg_km
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
? Winsock.state продолжает возвращать 7 при отключения сервера
Нужно задействовать опцию TCP/IP - Keep Alive. Подробная статья есть на www.rsdn.ru. На фоксе рабочий пример:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
FUNCTION TCPKeepAlive
LPARAMETERS nSck, nTime, nInterval
	DECLARE LONG WSAIoctl IN ws2_32.dll LONG, LONG, STRING@, ;
		INTEGER, INTEGER, INTEGER, LONG@, INTEGER, INTEGER
	DECLARE LONG WSAGetLastError IN ws2_32.dll
	nSize =  0 
	cStr = long2str( 1 ) + long2str(nTime) + long2str(nInterval)
	nRet = WSAIoctl(nSck, 0x80000000 + 0x18000000 +  4 , @cStr, ;
		 12 ,  0 ,  0 , @nSize,  0 ,  0 )

	IF nRet = - 1 
		nRet = WSAGetLastError()
	ENDIF
	RETURN nRet
ENDFUNC
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / ? Winsock.state продолжает возвращать 7 при отключения сервера / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]