Страница: 1 |
Страница: 1 |
Вопрос: Winsock блин...
Добавлено: 06.08.04 11:12
Автор вопроса: KAM | ICQ: 190197618
Вообщем ситуация такая:
имеется массив сокетов (напрммер от 1 до 5) с именем ws (винсоки).
Потом допустим во время работы программы сокет 2 закрыл соединение.
Тра-та-та... Всё работает...
Но дальше мне необходимо выполнить процедуру, котроая творит примерно следующее:
Dim i As Integer
For i = 1 To 5
ws(i).SendData Data
Next i
Как мы уже знаем сокет 2 не держит связи, следовательно при попытке отправить этим сокетом данне программа вылетает с ошибкой (понятно какой)
-0--0--
Внимание вопрос :)) - Как бы мне проигнорировать второй сокет и продолжить цикл начиная с третьего сокета??? Реально ли это???
ЗЫ: Использование винсока ОБЯЗАТЕЛЬНО (т.е. другие сокетные движки не предлагать)
Ответы
Всего ответов: 14
Номер ответа: 1
Автор ответа:
DaSharm
ICQ: 780477
Вопросов: 72
Ответов: 1297
Web-сайт:
Профиль | | #1
Добавлено: 06.08.04 12:04
on error resume next
Номер ответа: 2
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #2
Добавлено: 06.08.04 14:30
Dim i As Integer
For i = 1 To 5
If ws(i).State = x Then
ws(i).SendData Data
End If
Next i
где x - значение одной из констант
состояния винсока от 0 до 7 (сейчас
не помню)
Номер ответа: 3
Автор ответа:
KAM
ICQ: 190197618
Вопросов: 25
Ответов: 97
Профиль | | #3
Добавлено: 06.08.04 15:41
>on error resume next
Вся феня в том что я так делал. Тогда он просто выходит из цикла и в результате сокет 3 данные не отправляет
2mc-black: блин, реально... И как это я не допёр??!!! If ws(i).State=sckConnected!!!!! Эх я и прогнал...
Номер ответа: 4
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #4
Добавлено: 06.08.04 17:38
Бывает. А что, правда, из цикла выходит? Написал
Private Sub Command1_Click()
On Error Resume Next
s = 0
For i = -2 To 3
s = s + 6 / i
Next
MsgBox s
End Sub
Выдает 2, все нормально. А с сокетами не так???
Номер ответа: 5
Автор ответа:
KAM
ICQ: 190197618
Вопросов: 25
Ответов: 97
Профиль | | #5
Добавлено: 06.08.04 20:47
Может быть и у меня руки кривые, лисапедов наставил и запутался... Но у меня реально сокет 3 данные не отправлял...
Номер ответа: 6
Автор ответа:
KAM
ICQ: 190197618
Вопросов: 25
Ответов: 97
Профиль | | #6
Добавлено: 06.08.04 21:51
Да и ещё вопрос (извините за оффтоп):
как в программе сделать паузу между командами в процедуре на несколько минут (например в две)?
Номер ответа: 7
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #7
Добавлено: 06.08.04 22:17
Заряди Timer-control $)
Номер ответа: 8
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #8
Добавлено: 07.08.04 14:35
Попробуй:
Private Sub ws_Error(Index as integer, ErrNum as integer) 'или что-то в этом роде ...
'Здесь можешь ничего не писать
End Sub
Номер ответа: 9
Автор ответа:
KAM
ICQ: 190197618
Вопросов: 25
Ответов: 97
Профиль | | #9
Добавлено: 07.08.04 16:20
2Noviks: Ну спасиба!!! Читать топик весь надо было бы!!! Я с этим уже давно разобрался + это слишком неудобный вариант... Но всё равно спасиба
Номер ответа: 10
Автор ответа:
KAM
ICQ: 190197618
Вопросов: 25
Ответов: 97
Профиль | | #10
Добавлено: 07.08.04 16:22
Да и ещё: если я ничего не напишу в этом обработчике ошибок, то это будет равносильно тому, что этой процедуры нет!
Номер ответа: 11
Автор ответа:
AASoft
Вопросов: 86
Ответов: 920
Профиль | | #11
Добавлено: 08.08.04 03:16
2 KAM, post #6,
yuzaj API Sleep()
Номер ответа: 12
Автор ответа:
DaSharm
ICQ: 780477
Вопросов: 72
Ответов: 1297
Web-сайт:
Профиль | | #12
Добавлено: 09.08.04 10:38
Я думаю, ты делаешь чат, а при массовой розссылке сообщений, все сливаеться или там ещё и всякие другие прелести. Самый реальный вариант,вот эта ф-ция:
Public Sub Wait(seconds)
Timer1.Enabled = True
Me.Timer1.Interval = 1000 * seconds
While Me.Timer1.Interval > 0
DoEvents
Wend
Timer1.Enabled = False
End Sub
Private Sub Timer1_Timer()
Timer1.Interval = 0
End Sub
И вызываешь где нужно: wait 2 - подождет 2 секунды.
Пример такого чата (кстати, примитивно это) есть у меня на сайте и называеться как-то типа "Многопользовательский чат"
Номер ответа: 13
Автор ответа:
KAM
ICQ: 190197618
Вопросов: 25
Ответов: 97
Профиль | | #13
Добавлено: 09.08.04 11:33
Да нет, DaSharm... Чат я не делаю... Тут не много другое.
Про wait я знаю. Действительно, помогает. Но мне нужна задержка на несколько минут.
Номер ответа: 14
Автор ответа:
DaSharm
ICQ: 780477
Вопросов: 72
Ответов: 1297
Web-сайт:
Профиль | | #14
Добавлено: 09.08.04 11:39
wait 2 минуты тоже подождет без проблем.