Ошибки WinSock: какие куда

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Ошибки WinSock: какие куда

Сообщение GSerg » 11.01.2004 (Вс) 8:06

Озаботился написанием Винсока. Кое-что вырисовывается :)
Делаю нормальный контроль ошибок. У оригинального OCX одни ошибки вызывают ран-тайм эррор, а другие рэйзят событие error. Спрашивается, какие ошибки в какую категорию.
Понимаю, конечно, что ошибки инициализации библы, создания самого сокета, регистрации message hadler - всё в рантайм. Но при самой работе?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 11.01.2004 (Вс) 12:52

Предлагаю соломоново решение :)
Все, что определяется через WSAGetLastError в эвенты, ошибки, которые возвращаются непосредственно API-функциями, в рун-тайм
Lasciate ogni speranza, voi ch'entrate.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 11.01.2004 (Вс) 16:24

Так ведь вызывать wsagetlasterror я буду только тогда, когда API-функция вернёт SOCKET_ERROR :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 12.01.2004 (Пн) 9:34

Родилось иное соломоново решение - всё, что приходит через HIWORD(lParam) - в event, а остальное в ран-тайм.

Теперь другой вопрос. Как реализован переход инидкатора состояния? То есть, к примеру, изначально sckClosed. Начинаем соединяться - sckConnecting, потом sckConnected. Если возникает ошибка - sckError. Соединения небыло, значит сокет закрыт на самом деле. Когда sckError заменяется опять на sckClosed?
Ну и иные переходы :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Taras2
Обычный пользователь
Обычный пользователь
 
Сообщения: 82
Зарегистрирован: 20.06.2003 (Пт) 12:13

Сообщение Taras2 » 12.01.2004 (Пн) 11:20

GSerg писал(а):Так ведь вызывать wsagetlasterror я буду только тогда, когда API-функция вернёт SOCKET_ERROR :)

Интересно, как вы собираетесь определить Хендл сокета для wsagetlasterror, из WinSock компонента? Я не говорю, что это невозможно, но геморно это точно.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 12.01.2004 (Пн) 11:53

Я так думаю, что он не использует компонент, а реализует свой через API. А хэндл сокета из компонента получить несложно, есть такое свойство как Winsock1.SocketHandle.

2GSerg, я имел ввиду те функции, которые возвращают не SOCKET_ERROR или INVALID_SOCKET, а непосредственно код ошибки (WSAStartup и еще какая-то)
Lasciate ogni speranza, voi ch'entrate.

Taras2
Обычный пользователь
Обычный пользователь
 
Сообщения: 82
Зарегистрирован: 20.06.2003 (Пт) 12:13

Сообщение Taras2 » 12.01.2004 (Пн) 18:17

alibek писал(а):Я так думаю, что он не использует компонент, а реализует свой через API. А хэндл сокета из компонента получить несложно, есть такое свойство как Winsock1.SocketHandle.

Сорри, слона то я и не заметил. :oops:
ЗЫ. Никто не подскажет как использовать Winsock как класс, а не компонент?


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: PetalBot и гости: 5

    TopList  
cron