2011-09-09 23 views
0

我正在爲辦公室中使用的舊庫編寫替代品,以便與一個相當笨拙和舊的定製C++框架進行通信,該框架通過套接字接受請求以便與一堆其他系統。問題在於它只會接收包含必須以特定方式格式化的字符串的純文本消息。通過.NET中的套接字發送純文本

我面臨的問題是我迄今沒有發現通過套接字發送純文本的方式。 Socket的Send方法只會接收字節數組,並且在偵聽點接收到數據時,它會完全被加擾,並且我無法將其弄亂,以便將字節數組轉換回純文本。我需要能夠發送純文本,而不是字節數組。

這是Connect和Send方法我到目前爲止:

Public Sub Connect(Optional ByVal pHostName As String = "", Optional ByVal pPort As Integer = 0) 
    If pHostName.Trim <> "" Then mHostName = pHostName 
    If pPort > 0 Then mPort = pPort 

    Try 
     Dim ipep As IPEndPoint 

     If IsIPAddress(mHostName) Then 
      ipep = New IPEndPoint(IPAddress.Parse(mHostName), mPort) 
     Else 
      ipep = New IPEndPoint(IPAddress.Parse(Dns.GetHostEntry(mHostName).AddressList(0).ToString), mPort) 
     End If 
     mSocket = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp) 
     mSocket.Connect(CType(ipep, EndPoint)) 
     mState = eState.Connected 
     RaiseEvent Connected() 
     mDataTimer.Start() 
    Catch ex As Exception 
     Me.Close() 
     Throw ex 
    End Try 
End Sub 

Public Sub SendData(ByVal pBytes() As Byte) 
    mSocket.Send(pBytes) 
End Sub 

Public Sub SendString(ByVal pString As String) 
    Dim bytes() As Byte = System.Text.Encoding.UTF8.GetBytes(pString) 
    mSocket.Send(bytes) 
End Sub 

任何幫助將不勝感激!

+0

另一方面是什麼服務/腳本或應用程序?更多地解釋,所以我們可以幫助你。 –

回答

2

你確定你應該使用unicode嗎?由於這是一箇舊的C++應用程序,我敢打賭,編碼應該是普通的舊或像iso-8559-1這樣的字符集。

使用套接字時沒有「以純文本形式發送」。它始終是使用的字節流。舊的應用程序只是使用特定的編碼將接收到的字節解釋爲字符串。

+0

謝謝你,這個伎倆!這太容易了,我怎麼不能想出來呢? – reno812