【问题标题】:Send plain text via sockets in .NET通过 .NET 中的套接字发送纯文本
【发布时间】:2011-11-14 00:16:54
【问题描述】:

我正在为我们在办公室使用的旧库编写一个替代品,以与一个相当笨拙且旧的定制 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

任何帮助将不胜感激!

【问题讨论】:

  • 另一边有什么服务/脚本或应用程序?解释更多,以便我们为您提供帮助。

标签: .net vb.net sockets


【解决方案1】:

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

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

【讨论】:

  • 谢谢你,成功了!太简单了,我怎么想不出来?
猜你喜欢
  • 1970-01-01
  • 2015-05-27
  • 2014-03-31
  • 1970-01-01
  • 2013-03-15
  • 2011-02-24
  • 2012-07-12
相关资源
最近更新 更多