Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过套接字发送对象_C#_Sockets - Fatal编程技术网

C# 通过套接字发送对象

C# 通过套接字发送对象,c#,sockets,C#,Sockets,我不熟悉C#中的股票,我希望发送一个C#中的对象。我们一直在使用BinaryWriter发送数据(对于字符串很好),但它似乎没有类似的方法 writer.Writer(new SerliaizedObject()); 我们如何使用BinaryReader/BinaryWriter实现这一点 更新: 我使用以下函数将对象转换为字节,并将其发送到客户端 public static byte[] SerializeToBytes<T>(T item) {

我不熟悉C#中的股票,我希望发送一个C#中的对象。我们一直在使用BinaryWriter发送数据(对于字符串很好),但它似乎没有类似的方法

writer.Writer(new SerliaizedObject());
我们如何使用BinaryReader/BinaryWriter实现这一点

更新: 我使用以下函数将对象转换为字节,并将其发送到客户端

 public static byte[] SerializeToBytes<T>(T item)
        {
            var formatter = new BinaryFormatter();
            using (var stream = new MemoryStream())
            {
                formatter.Serialize(stream, item);
                stream.Seek(0, SeekOrigin.Begin);
                return stream.ToArray();
            }
        }

        public static object DeserializeFromBytes(byte[] bytes)
        {
            var formatter = new BinaryFormatter();
            using (var stream = new MemoryStream(bytes))
            {
                return formatter.Deserialize(stream);
            }
        }
但是阅读器似乎不起作用,有什么想法吗?

用于以二进制格式将可序列化对象写入流:

FileStream fs = new FileStream("DataFile.dat", FileMode.Create);
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(fs, mySerializable);

您应该使用前4个字节作为长度头,并在接收循环中添加变量bytesReadSoFar。然后您就知道什么时候接收到所有内容。

将对象序列化为字节数组并写入该数组?在转换为数组之前,您不需要查找流的开头。
   while (true)
   {
        byte[] bytes = reader.ReadBytes(120);
        mydata temp = DeserializeFromBytes(bytes) as mydata;
        ChatBox.AppendText("Server Says " + temp + "\r\n");
   }
FileStream fs = new FileStream("DataFile.dat", FileMode.Create);
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(fs, mySerializable);