Я пытаюсь создать простое приложение на стороне клиента, чтобы получать небольшие текстовые данные, сравнивать их и затем что-то делать на клиентском компьютере в зависимости от того, какой сервер отправлен.
Логика сервера : Серверная часть сделана в Java, поэтому ничего не могу изменить там.Сервер отправляет строку «abc001» при подключении к клиенту.
Клиентская логика : клиент получает строку «abc001» с сервера и проверяет, совпадает ли полученная строка с «abc001», затемделает что-то соответственно.
Проблема : Когда клиент получает данные, я отображаю их в msgbox.Но вместо просто «abc001» появляется дополнительное пустое сообщение (изображение включено).
Код клиента - при запуске :
Try
' declare vals
Dim ip As String = "127.0.0.1"
Dim port As Integer = 5000
' set client
_client = New TcpClient(ip, port)
' disable cross thread calls checking
CheckForIllegalCrossThreadCalls = False
' recieve msg
Threading.ThreadPool.QueueUserWorkItem(AddressOf RecieveMessages)
Catch ex As Exception
MsgBox(ex.ToString)
End Try
Код клиента - получение данных
Private Sub RecieveMessages(state As Object)
Try
While True
Dim ns As NetworkStream = _client.GetStream()
Dim toRecieve(_client.ReceiveBufferSize) As Byte
ns.Read(toRecieve, 0, CInt(_client.ReceiveBufferSize))
Dim txt As String = Encoding.ASCII.GetString(toRecieve)
MsgBox(txt)
End While
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
MsgBox 1
MsgBox 2
Как не получить пустую панель сообщений.Даже при сравнении полученные данные не соответствуют параметрам.Пытался использовать задержку, пытался установить размер буфера до 6 байт, но безрезультатно. Любая помощь приветствуется.Спасибо.
EDIT 1 : Я старался изо всех сил, чтобы понять это, но не могу .. Попытался очистить возвращенные строковые данные и даже попытался сохранить все возвращаемые данные в массиве.Увидел стек, и он говорит, что в msgbox нет ничего.Это ноль .. Я даже не знаю, что делать .. Вот код для чистых строк:
Private Sub RecieveMessages(state As Object)
Dim message(0) As String
Dim command_raw, command_clean, command As String
Dim counter As Integer = 0
Try
While True
Dim ns As NetworkStream = _client.GetStream()
Dim toRecieve(_client.ReceiveBufferSize) As Byte
ns.Read(toRecieve, 0, CInt(_client.ReceiveBufferSize))
Dim txt As String = Encoding.ASCII.GetString(toRecieve)
message(0) = txt
command_raw = message(0)
command_clean = command_raw.Replace(vbCrLf, Nothing)
command = command_clean.Substring(0, 6)
MsgBox(command)
End While
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub