Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 Повторное использование WSAEventSelect  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 10998
Есть такой код
FEvent := WSACreateEvent;
FSocket := INVALID_SOCKET;

procedure CreateSocket;
begin
  FSocket := SockCheck(socket(...));
  SockCheck(connect(FSocket, ....))
  SockCheck(WSAEventSelect(FSocket, FEvent, FD_READ or FD_WRITE or FD_CLOSE));
end;

procedure DestroySocket;
begin
  CloseSocket(FSocket);
  FSocket := INVALID_SOCKET;
end;

procedure DoProcess;
begin
  if FSocket = INVALID_SOCKET then
    CreateSocket;
  ........
end;

Как это работает: приходит команда, я подключаюсь (если еще не был подключен) к удаленному серверу и работаю с ним. Если сервер закрывает соединения, ко мне приходит FD_CLOSE и я закрываю свой сокет. А потом, при необходимости, создаю новый сокет и ассоциирую его с тем же событием FEvent.

Сейчас при повторном вызове я получаю ошибку Code: 10038. Сделана попытка выполнить операцию на объекте, не являющемся сокетом.

Я чего-то не закрываю? Или повторное использование Event запрещено в принципе?

С уважением, Vasilisk
9 июл 19, 17:20    [21923626]     Ответить | Цитировать Сообщить модератору
 Re: Повторное использование WSAEventSelect  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 10998
Нашел ошибку. Вместе с сокетом закрывался и Event. А Microsoft сэкономили на коде ошибки
9 июл 19, 17:37    [21923651]     Ответить | Цитировать Сообщить модератору
 Re: Повторное использование WSAEventSelect  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 47655

_Vasilisk_
Вместе с сокетом закрывался и Event.

В смысле в твоём коде он закрывался? Потому что автоматически вообще-то не должен по идее.

Posted via ActualForum NNTP Server 1.5

9 июл 19, 18:42    [21923712]     Ответить | Цитировать Сообщить модератору
 Re: Повторное использование WSAEventSelect  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 10998
Dimitry Sibiryakov
В смысле в твоём коде он закрывался?
Да.
9 июл 19, 19:23    [21923747]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить