通过.NET中的套接字发送纯文本 我正在为我们在办公室使用的一个旧的图书馆编写一个替换程序,用来与一个相当笨拙和陈旧的定制的C++框架通信,它通过套接字进行请求,以便与一堆其他系统通信。问题是它只接受包含字符串的纯文本消息,而字符串必须以非常特定的方式格式化

通过.NET中的套接字发送纯文本 我正在为我们在办公室使用的一个旧的图书馆编写一个替换程序,用来与一个相当笨拙和陈旧的定制的C++框架通信,它通过套接字进行请求,以便与一堆其他系统通信。问题是它只接受包含字符串的纯文本消息,而字符串必须以非常特定的方式格式化,.net,vb.net,sockets,.net,Vb.net,Sockets,我面临的问题是,到目前为止,我还没有找到通过套接字发送纯文本的方法。套接字的Send方法只接受字节数组,当侦听点接收到数据时,它完全被置乱了,为了将字节数组转换回纯文本,我无法处理它。我需要能够发送纯文本,而不是字节数组 这是迄今为止我使用的Connect和Send方法: Public Sub Connect(Optional ByVal pHostName As String = "", Optional ByVal pPort As Integer = 0) If pHost

我面临的问题是,到目前为止,我还没有找到通过套接字发送纯文本的方法。套接字的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
Public子连接(可选ByVal pHostName As String=”“,可选ByVal pPort As Integer=0)
如果pHostName.Trim“”则mHostName=pHostName
如果pPort>0,则mPort=pPort
尝试
将ipep变暗为IPEndPoint
如果IsIPAddress(mHostName),则
ipep=新IPEndPoint(IPAddress.Parse(mHostName),mPort)
其他的
ipep=新IPEndPoint(IPAddress.Parse(Dns.GetHostEntry(mHostName).AddressList(0.ToString),mPort)
如果结束
mSocket=新套接字(AddressFamily.InterNetwork、SocketType.Stream、ProtocolType.Tcp)
mSocket.Connect(CType(ipep,端点))
mState=eState.Connected
RaiseEvent已连接()
mDataTimer.Start()
特例
我
投手
结束尝试
端接头
Public Sub SendData(ByVal pBytes()作为字节)
mSocket.Send(PB字节)
端接头
Public Sub SendString(ByVal pString作为字符串)
Dim bytes()的形式为Byte=System.Text.Encoding.UTF8.GetBytes(pString)
mSocket.Send(字节)
端接头

任何帮助都将不胜感激

您真的确定应该使用unicode吗?因为它是一个古老的C++应用程序,所以我敢打赌,编码应该是纯旧的代码>编码。ASCII < /C>或字符集,如代码> ISO-855 9-1 < /C> > /P>
使用套接字时没有“以纯文本形式发送”。使用的总是字节流。旧的应用程序只是使用特定的编码将接收到的字节解释为字符串。

谢谢,成功了!这太简单了,为什么我想不出来?另一边是什么服务/脚本或应用程序?多解释,这样我们就能帮助你了。