Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 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-сайт: dasharm.com
 Профиль | | #1
Добавлено: 06.08.04 12:04
on error resume next

Ответить

Номер ответа: 2
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #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-сайт: sharpc.livejournal.com
 Профиль | | #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-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #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-сайт: dasharm.com
 Профиль | | #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-сайт: dasharm.com
 Профиль | | #14
Добавлено: 09.08.04 11:39
wait 2 минуты тоже подождет без проблем.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам