Проблема следующего характера.
Пишу библиотеку для работы с XIMMS протоколом.
Использую TCPClient класс для соединения.
Делаю асинхроное чтение так:
- Код: Выделить всё
Private in_buff(1024 * 500) As Byte
Private _AsyncStream As IAsyncResult
Private wtcp As New Net.Sockets.TcpClient
Private wstream As NetworkStream
_AsyncStream = wstream.BeginRead(in_buff, 0, in_buff.Length, New AsyncCallback(AddressOf OnRecesive), in_buff)
Public Sub DataSend(ByVal raw_data As String)
If wtcp.Connected = True Then
Dim out_buff As Byte() = Encoding.UTF8.GetBytes(raw_data)
wstream.Write(out_buff, 0, out_buff.Length)
end sub
Private Sub OnRecesive(ByVal ar As IAsyncResult)
SyncLock wstream
Dim total As Integer
If ar.IsCompleted Then
total = wstream.EndRead(ar)
Dim _tm_in_buff As Byte() = ar.AsyncState
debug.print (Encoding.UTF8.GetString(_tm_in_buff))
_AsyncStream = wstream.BeginRead(in_buff, 0, in_buff.Length, New AsyncCallback(AddressOf OnRecesive), in_buff)
End Synlock
End Sub
Но у меня теряются данные! Если приходят сообщения с сервера небольшие то все ОК а если большие (больше буфера к примеру) то банально пропадает часть данных причем центральная.
Пример:
os.ru</field><field name="objectclass">CommuniGateAccount</field><field name="sn">Office</field><field name="telephoneNumber">7447-44402</field><field name="uid">7370402</field></directoryData>
Причем что я не пробовал, первая аля строка приходит нормально, далее даных нет и потом вываливается вот это.
В чем проблема?