通过.NET中的套接字发送纯文本

时间:2011-09-09 18:14:39

标签: .net vb.net sockets

我正在为我们在办公室使用的旧库编写一个替代品来与一个相当笨拙且旧的定制C ++框架进行通信,该框架通过套接字接收请求以便与许多其他系统进行通信。问题是它只会包含一个包含字符串的纯文本消息,该字符串必须以非常具体的方式格式化。

我面临的问题是到目前为止我还没有找到通过套接字发送纯文本的方法。套接字的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

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:2)

你真的确定你应该使用unicode吗?由于它是一个旧的C ++应用程序,我敢打赌编码应该是普通的Encoding.ASCII或像iso-8559-1这样的字符集。

使用套接字时没有“以纯文本格式发送”。它始终是正在使用的字节流。旧的应用程序只是使用特定的编码将接收的字节解释为字符串。