当前位置:编程学习 > C#/ASP.NET >>

c#编写的一个socket通信时报通信Client端, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nul

   已经尝试很多方法了,比如说重启服务器,修改变量等等还是无法解决啊!希望高手解决急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急! --------------------编程问答-------------------- 问题是什么阿 --------------------编程问答-------------------- 详细信息 --------------------编程问答--------------------
引用 1 楼 justfortemp 的回复:
问题是什么阿

就是我建立的服务器端和客户端两者通信的时候,客户端发送图片,服务器接收图片时服务器报错。
“通信Client端, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nul”
服务器代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net.Sockets;
using System.Net;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using SerializeObj;

namespace fjscServer
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private SerializeFile myMedia = new SerializeFile();
        private SerializeFile newFile = null;
        private void Form1_Load(object sender, EventArgs e)
        {
            
        }

        private void button1_Click(object sender, EventArgs e)
        {
            this.button1.Enabled = false;
            //新建监听 
            TcpListener listener = new TcpListener(IPAddress.Parse("166.111.66.37"),8880);
            listener.Stop();
            //开始监听 
            listener.Start();
            while (true)
            {
                const int bufferSize = 4096;
                TcpClient client = listener.AcceptTcpClient();               
                //接收客户端传过来的数据 
                NetworkStream clientStream = client.GetStream();
                byte[] responseBuffer = new byte[bufferSize];
                MemoryStream memStream = new MemoryStream();
                int bytesRead = 0;
                do
                {
                    bytesRead = clientStream.Read(responseBuffer, 0, bufferSize);
                    memStream.Write(responseBuffer, 0, bytesRead);

                } while (bytesRead > 0);                          
                 BinaryFormatter formatter = new BinaryFormatter();               
                 memStream.Seek(0, SeekOrigin.Begin);
                 newFile = (SerializeFile)formatter.Deserialize(memStream);
                 //自定义存放目录 newFile.FileName 存放在debug下面
                 FileStream fs = new FileStream(newFile.FileName, FileMode.OpenOrCreate);
                 BinaryWriter w = new BinaryWriter(fs);
                 w.Write(newFile.FileData);               
                 fs.Close();
                 memStream.Close();
                 MessageBox.Show("成功");
                

            } 

        }

        private void button2_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
    }
} --------------------编程问答-------------------- newFile = (SerializeFile)formatter.Deserialize(memStream);
在VS中显示错误的信息。 --------------------编程问答-------------------- 反序列化很容易出错。。。给你点建议吧
1.你首先看看网络流是否正常接收到数据,包括为空或全为0.
2.你所序列化的数据大小是否大于你所定义的接收缓冲区即你这里的4096
3.不行你先试试序列化其他的对象看是否成功,也许是程序集遭到修改造成了错误 --------------------编程问答-------------------- up一下                                       --------------------编程问答--------------------
引用 6 楼 happyrain2010 的回复:
up一下

照你那样做了还是没解决,不过仍旧谢谢你拉!
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,