- Код: Выделить всё
Private Sub doListen()
Dim bytes(20480) As Byte
Dim data As String
Dim i As Int32 = -1
While (i <> 0)
i = stream.Read(bytes, 0, bytes.Length)
data = System.Text.Encoding.UTF8.GetString(bytes, 0, i)
RaiseEvent OnRead(Me, data)
End While
closeClient()
RaiseEvent Disconnect(Me, "Клиент №" & Me.Number & " (" & Me.IP & ")" & " отключился от сервера.")
Catch ex As IO.IOException
closeClient()
RaiseEvent Disconnect(Me, "Проблема соединения: " & ex.Message)
End Try
End Sub
Принцип работы следующий
Идёт пакет авторизации, после сервер даёт ответ клиенту либо True либо False, что значит Пароль верный или нет.
Сразу после этого, клиент даёт запрос на данные. И сервер уже передаёт нужные данные из базы.
Так вот прикол такой, периодически, закономерность мне выявить не удалось, когда Android работает через Edge интернет, общение клиент сервера прерывается на строке i = stream.Read(bytes, 0, bytes.Length) Тоесть, как буд-то данные клиент не посылает. Хотя я точно знаю, что данные уходят! Но на андроиде висит строка Запрос данных. Значит Андроид запрос отправил.
Когда я тут же подрубаю Смарт к WiFi всё великолепно работает. Стопора нет. Если возвращаюсь на Edge, снова та же ситуация.
Бывают дни, когда и с Edgem великолепно работает. А бывают, что не работает. У друга тоже смарт, и таже прога. Так вот у нас с ним, в разное время бывает такой сбой через Edge, а бывает и совпадает.
Я никак не могу выцепить проблему. Кто может подсказать, возможные причины этого безобразия, буду благодарен.
как можно проверить, отследить, наличие данных в потоке. Приходят ли данные, возможно они повреждены. Если приходят повреждённые данные, поток считает что их вообще нет? Или он как-то по другому к ним "относится"?