2017-04-12 29 views
0

我嘗試使用TCP套接字發送字符串。 但字符串完全搞砸了。VB.NET套接字編程,如何正確發送字符串數組?

我的字符串:

Dim strMessage(10) As String 
     strMessage(0) = "Lorem ipsum dolor sit amet, consectetur adipiscing elit." 
     strMessage(1) = "Etiam imperdiet erat vitae elit faucibus, et accumsan est facilisis." 
     strMessage(2) = "Duis elementum ante et quam sagittis molestie at ac nulla." 
     strMessage(3) = "Pellentesque a metus eget metus aliquam pharetra in sed nibh." 
     strMessage(4) = "Ut ut eros sit amet nisi consequat vulputate." 
     strMessage(5) = "Fusce vel dui at purus laoreet consequat." 
     strMessage(6) = "Donec sed erat lacinia, aliquam ante eu, pulvinar ligula." 
     strMessage(7) = "Vestibulum posuere elit facilisis orci sagittis, id feugiat mi aliquam." 
     strMessage(8) = "Donec sit amet lectus ut nibh pharetra dapibus ut vitae nulla." 
     strMessage(9) = "Maecenas quis nunc scelerisque, cursus nibh tristique, pulvinar ipsum." 

TCP客戶端代碼:

Dim stm As Stream 
     Dim counter As Integer = 0 
     Do 
      stm = tcpClient.GetStream() 'getting the stream of the client 
      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()) 

      counter += 1 

     Loop While counter < 10 

TCP服務器代碼:

Do 
     Try 
      Dim size As Integer = TcpSocket.Receive(bitData) 
      Console.WriteLine(size.ToString) 
      Dim newString As String 
      'Dim chars(size) As Char 

      'chars(i) = Convert.ToChar(bitData(i)) 
      newString = Encoding.ASCII.GetString(bitData) 

      'Dim newString As New String(chars) 
      Console.WriteLine(newString) 
      strMessage(counter) = newString 


      counter += 1 

      If counter = 10 Then 
       state = 2 
      End If 

     Catch ex As Exception 
      Console.Write(ex.ToString()) 
     End Try 
    Loop While state = 1 

結果是:
這是消息ÿ ou收到:Lorem ipsum dolor sit amet,consectetur adipiscing elit。
這是您收到的信息:Etiam imperdiet erat vitae elit faucibus et al accumsan est facilisis。
這是您收到的消息:Duis elementum ante et quam sagittis molestie at ac nulla.facilisis。
這是您收到的信息:Pellentesque a metus eget metus aliquam pharetra in sed nibh.ilisis。
這是你收到的信息:在seid nibh.ilisis中,你可以坐在amet nisi consequat vulputate.tra。
這是您收到的消息:在sed nibh.ilisis中的purus laoreet consequat.ate.tra上的Fusce vel dui。
這是您收到的信息:Donec sed erat lacinia,aliquam ante eu,pulvinar ligula.ibh.ilisis。
這是你收到的信息:Vestibulum posuere elit facilisis orci sagittis,id feugiat mi aliquam。
這是您收到的消息:Donec sit amet lectus ut nibh pharetra dapibus ut vitae nulla。 aliquam。

+1

此問題與[this one]非常相似(http://stackoverflow.com/questions/43335738/vb-net-tcp-socket-programming-send-an-array-of-string) –

+0

可能的重複[VB.NET TCP套接字編程 - 發送字符串數組](http://stackoverflow.com/questions/43335738/vb-net-tcp-socket-programming-send-an-array-of-string) –

回答

0

我會嘗試在發送之前使用Join命令,然後在收到它之後使用Split將其放回到數組中。

這樣你只能發送純文本 - 而且會更簡單。

相關問題