VB.NET TCP服务器套接字编程 - 从字节接收字符串

问题描述:

如何从此代码中获取字符串而不是char数组?VB.NET TCP服务器套接字编程 - 从字节接收字符串

客户端代码:

  stm = tcpClient.GetStream() 
      Dim ascenc As New ASCIIEncoding 
      Dim byteData() As Byte = ascenc.GetBytes(strMessage(counter)) 
      Thread.Sleep(2000) 
      Console.WriteLine("Transmitted ") 
      stm.Write(byteData, 0, byteData.Length()) 

Server代码:

Dim size As Integer = TcpSocket.Receive(bitData) 
      Dim chars(size) As Char 
      For i As Integer = 0 To size 
       chars(i) = Convert.ToChar(bitData(i)) // i want to get the string directly, how ? 
      Next 
      Dim newString As New String(chars) 
      Console.WriteLine(newString) 
      strMessage(counter) = newString 
+0

[尝试](https://msdn.microsoft.com/en-us/library/ms172827.aspx)[使用Google](https://www.dotnetperls.com/convert-string-byte- array-vbnet)[at](http://*.com/questions/1003275/how-to-convert-byte-to-string)[all?](http://www.convertdatatypes.com/Convert-Byte -Array-to-String-in-VB.net.html) –

你已经拥有了它你的代码,我建议实施:

Dim MyString As String = New String(MyArray) 

如果你想字节数组转换你可以使用:

Dim MyString As String = Encoding.ASCII.GetString(bytes) 
+0

他已经这样做了,但是:'Dim newString As New String(chars)'。他想要转换字节数组,而不是迭代它来创建一个char数组。 –

+0

@VisualVincent是的,这就是为什么我编辑我不明白他的问题。然后一个简单的:Encoding.ASCII.GetString(字节) – Mederic

+0

这就是他想要的,是的。我在回答中写道(除了我用他的方法而不是静态属性)。 –

您也可以在服务器上使用ASCIIEncoding。只需使用它的GetString() method而不是GetBytes()

Dim ascenc As New ASCIIEncoding 
Dim newString As String = ascenc.GetString(bitData)