.NET Socket Отправка и получение не совпадают - PullRequest
1 голос
/ 29 февраля 2012

У меня есть следующие строки для отправки байтов с использованием сокета

Dim server As New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)

Dim myIp As IPAddress = IPAddress.Parse("myIP")

Dim ip As New IPEndPoint(myIp, Int32.Parse("myPort"))

server.Connect(ip)

server.Send(Encoding.UTF8.GetBytes("Halo")

Это строки, которые я использую для получения

Dim data(255) As Byte

Dim bytesReceived As Integer = socket.Receive(buffer)

Dim stringData As String = Encoding.UTF8.GetString(data)

Моя проблема:

Как вкод, который я должен восстановить "Halo".Вместо этого я продолжаю получать что-то вроде «[]».Может кто-нибудь дать мне совет по этому поводу?

1 Ответ

2 голосов
/ 29 февраля 2012

Для получения данных в сокете необходимо использовать метод Socket.Receive.Вот пример того, что вам нужно сделать:

'Dim sock As Socket
Dim buffer(255) As Byte 'the data will be stored here
Dim bytesReceived As Integer = socket.Receive(buffer) 'will be used to see how many bytes were received

'not all bytes in the buffer contain data, so only use the number equal to the number received
Dim result As String = Encoding.UTF8.GetString(buffer, 0, bytesReceived)

Я бы порекомендовал использовать буфер большего размера, например, 4096. http://msdn.microsoft.com/en-us/library/w89fhyex.aspx содержит несколько примеров синхронных и асинхронных сокетов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...