Опять Winsock!!! Chat

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
JohnK
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 874
Зарегистрирован: 03.08.2002 (Сб) 0:35
Откуда: 48.02` 37.58`

Опять Winsock!!! Chat

Сообщение JohnK » 10.03.2004 (Ср) 1:34

Проблема в следуюшем: написан сервер, есть клиенты - участники чата. Все хорошо, но приналичии более двух клиентов сообщения рассылаются не всем. В чем ошибка? Заранее спасибо!

Вот процы из сервака:

Private Sub WS_ConnectionRequest(Index As Integer, ByVal requestID As Long)

Call AddLog("Connection request id " & requestID & " from " & WS(Index).RemoteHostIP)

If Index = 0 Then
If PR.count < 512 Then

Load WS(requestID)
WS(requestID).LocalPort = Port
WS(requestID).Accept requestID


User(PR.count).ID = requestID
PR.count = PR.count + 1
End If
End If

End Sub
--------------
Private Sub SendToAll(sss As String)
Dim i As Integer
For i = 0 To 511
If User(i).ID > 0 Then
If WS(User(i).ID).State = sckConnected Then
Call SendTo(sss, User(i).ID)

'Call Sleep(5000) - не помогает!
Call AddLog("Sending to " & Str(User(i).ID))

End If
End If
Next i
End Sub
SELECT * FROM girls WHERE tits NOT NULL AND age BETWEEN 18 AND 25 ORDER BY Beauty

JohnK
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 874
Зарегистрирован: 03.08.2002 (Сб) 0:35
Откуда: 48.02` 37.58`

Сообщение JohnK » 11.03.2004 (Чт) 0:54

При отладке все ОК, а при нормальной работе глюк - только два клиента получабют сообщения! :roll:
SELECT * FROM girls WHERE tits NOT NULL AND age BETWEEN 18 AND 25 ORDER BY Beauty

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Re: Опять Winsock!!! Chat

Сообщение SSecurity » 11.03.2004 (Чт) 0:58

Меня очень беспокоят эти строки... может быть стоит завести переменную, вместо requestID. т.е. ты конечно соглашаешься на коннект но в другом процессе. requestID бывает разный и не обязательно он у тебя по порядку пройдет от 0 до N.

JohnK писал(а): Load WS(requestID)
WS(requestID).LocalPort = Port
WS(requestID).Accept requestID


Может я не до конца разобрался .... но у меня два запроса следавшие подряд выдали такой результат:
requestID первого запроса - 411
requestID второго запроса - 374
Но я могу ошибаться.
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 11.03.2004 (Чт) 8:38

Меня тоже очень смущают эти строчки...

Действительно, RequestID не всегда (всегда не) идёт по порядку от 0 к какому-то n (n - Long)


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

    TopList