通过套接字发送列表<套接字>客户端

本文关键字:套接字 列表 客户端 | 更新日期: 2023-09-27 18:31:24

>我试图在 C# 中通过套接字发送列表通过这样做..

       client = new List<Socket>();
       Socket.Send(ObjectToByteArray(client));

其中 ObjectToByteArray 是

 private byte[] ObjectToByteArray(Object obj) /
    {
        if (obj == null)
            return null;
        BinaryFormatter bf = new BinaryFormatter();
        MemoryStream ms = new MemoryStream();
        bf.Serialize(ms, obj);
        return ms.ToArray();
    }

但是我从未从该方法中获取返回字节[]。

有什么帮助吗?有没有另一种通过套接字发送对象的方法?我的猜测是套接字列表永远不会结束,因为它永远不会停止接收信息。有没有办法关闭它然后重新打开它?

通过套接字发送列表<套接字>客户端

这个目标注定要失败。我不知道你说的"我永远不会从方法中获取返回字节[]"是什么意思(你是说ObjectToByteArray方法永远不会返回?),但这并不重要,因为Socket类是不可序列化的。

它不可能有任何有用的方式:序列化主要用于保留某些数据(例如在文件中)或将某些数据发送到其他计算机。在这两种情况下,都没有任何实用的方法可以将Socket实例转换为字节,然后再转换为Socket实例。

如果尝试将Socket实例存储在文件中,则如果尝试再次打开该文件,则Socket实例中的值将没有任何意义。基础非托管套接字句柄、绑定地址以及其他部分都不再与它们所表示的实际操作系统资源建立连接。

如果您尝试在另一台计算机上重新创建序列化的 Socket 实例,情况也是如此,但更是如此,因为这些值在另一台计算机上没有任何意义。

所以,这个具体问题的答案是"你不能,你甚至不应该尝试"。如果你有一些更广泛的目标,你想要实现,并希望得到帮助,你应该创建一个新的问题,具体说明你实际想要做什么,即你想要的最终结果。