2017-04-10 14 views
0

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)グーグル(https://www.dotnetperls.com/convert-string-byte- array-vbnet)[at](http://stackoverflow.com/questions/1003275/how-to-convert-byte-to-string)[すべて?](http://www.convertdatatypes.com/Convert-Byte -Array-to-String-in-VB.net.html) –

答えて

1

あなたはすでにそれは私が提案し、あなたのコードで実装があります:あなたはバイト配列を変換したい場合は

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(bytes) – Mederic

+0

これは彼が望むものです、はい。私は私の答えでそう書いた(静的なプロパティではなく彼のメソッドを使用していたことを除いて)。 –

1

ASCIIEncodingもサーバーで使用できます。 GetBytes()ではなく、GetString() methodを使用してください。

Dim ascenc As New ASCIIEncoding 
Dim newString As String = ascenc.GetString(bitData) 
関連する問題