【问题标题】:Send objects through tcplistener通过 tcplistener 发送对象
【发布时间】:2015-10-04 04:07:38
【问题描述】:

有没有办法通过 tcplistener 发送任何 除了 字符串?因为到目前为止我看到的所有示例都涉及将字符串编码为字节数组,将其发送出去,然后在另一端对其进行解码。

Encoding.ASCII.GetBytes("message");
//This is then sent as an array of bytes

如果我想发送一个浮点数,或者一个整数,或者其他什么?这是否涉及将对象“转换”为字节数组并将其发送过来?

[编辑] 如果这是一个愚蠢的问题,我深表歉意,但我正在尝试在此处了解有关网络的更多信息。

【问题讨论】:

  • 看看这个问题的答案:stackoverflow.com/questions/3609280/… 你会找到一个关于如何通过 TCP 发送数据的代码示例的解释。
  • 示例还向您展示了如何发送字节。否则如何发送 GetBytes 的结果。
  • Giorgi 提到您需要在最后将其作为字节发送。这是网络协议所理解的。不过,对于基本转换,请注意有一个 BitConverter.GetBytes(float) method

标签: c# network-programming tcplistener


【解决方案1】:

取决于,如果您可以将 BinaryWriter 附加到 NetworkStream,那么您可以执行以下操作:

static void ServerTask(object clnObj)
{
    TcpClient client = clnObj as TcpClient;

    BinaryWriter bw = new BinaryWriter(client.GetStream());

    int k =99;
    bw.Write(k);

    client.Close();
}

但是在发送二进制文件时,您应该注意字节序之类的问题。还有浮点数,重要的是编码,它必须相同 接收和发送部分。但我认为BinaryReaderBinaryWriter handle 这些适合你(例如,字节序是固定的)。

最后,所有内容都以字节数组的形式发送。只是BinaryWriter 在这里是一个抽象,它为您完成将整数转换为字节数组的工作。

【讨论】:

    猜你喜欢
    • 2013-06-17
    • 2012-06-19
    • 1970-01-01
    • 1970-01-01
    • 2015-05-06
    • 2014-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多