![]() |
Добро пожаловать, гость ( Вход | Регистрация )
![]() |
-=CHE@TER=- |
![]()
Сообщение
#1
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,371 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 318 раз(а) ![]() |
Delphi programs in API.
На английском. Очень подробно всё описано, плюс есть исходные коды готовых юнитов. Например SmallUtil, в котором есть все частоиспользуемые подпрограммы, и который в размере меньше, чем SysUtils (автор так утверждает - я не проверял). |
![]() ![]() |
-=CHE@TER=- |
![]()
Сообщение
#2
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,371 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 318 раз(а) ![]() |
Кто-нибудь знает, как можно проверить сокет на дохлость?
Суть проблемы: создаю подключение к серверу, а он может его закрыть - тогда на команде получения данных Recv() у меня программа навечно впадает в кому. В Интернете вычитал, что можно попробовать получить 0 байт и проверить ошибку: CODE Recv(SK, result[1], 0, 0); If WSAGetLastError = 0 Then Sz:=Recv(SK, result[1], Sz, 0) Else Sz:=SOCKET_ERROR; Однако! Первая строчка с получением 0 байт у меня работает нормально (XP SP3), а на соседней машине (2003 SP2) появляется BSoD с DRIVER_IRQL_NOT_LESS_OR_EQUAL. При этом сама машина с 2003 работает нормально и BSoD там никогда не было. Кто-нибудь может объяснить это вообще как понимать? Я, конечно, попробую ещё переписать с Select(), но такое поведение меня очень сильно озадачивает... |
![]() ![]() |
Упрощённая версия | Сейчас: 30th April 2025 - 22:00 |