日期:2014-05-18  浏览次数:20786 次

各位哥!问一个C#的网络传输问题。代码很少!帮我看下好吗??
先说代码:是这样的,我有一个发送端和一个接受端,发送端发送一个图片,接受端接受图片。

问题来了!:接受端接受到了图片,而且大小和发送端那边的本地图片文件一样大。但就是接受过来的图片是损坏的。是那个环节出问题了呢?还是哪些理论上错误的呢?先谢谢各位大哥了!


这个是接受端
C# code

static void Main(string[] args)
        {
            TcpClient tcp = new TcpClient();
            tcp.Connect("127.0.0.1", 9000);
            NetworkStream str = tcp.GetStream();
            byte[] byy=new byte[8*1024];
            System.IO.FileStream fs = new System.IO.FileStream("(1).jpeg", System.IO.FileMode.Create, System.IO.FileAccess.Write);
            while(true)
            {
                int a = str.Read(byy, 0, byy.Length);
                if (a > 0)
                    fs.Write(byy, 0, a);
                else
                    break;
            }
            fs.Close();
            str.Close();
            string s = Console.Read().ToString();
        } 




下面这个是服务端,监听连接,一旦有连接,就给对方发送图片 。
C# code


           IPAddress ip = IPAddress.Parse("127.0.0.1");
           TcpListener conn = new TcpListener(ip, 9000);
           conn.Start();
           TcpClient tcp = conn.AcceptTcpClient();

           FileStream fs = File.OpenRead("2012-08-04_15_58_25.Jpeg");
           byte[] fsdata = new byte[fs.Length];

           NetworkStream str = tcp.GetStream();
           str.Write(fsdata, 0, fsdata.Length);
           str.Close();
           fs.Close();
            string s = Console.Read().ToString(); 




问题是:接受过来的图片是损坏的。各位大哥指点一下。

------解决方案--------------------
探讨
FileStream fs = File.OpenRead("2012-08-04_15_58_25.Jpeg");
byte[] fsdata = new byte[fs.Length];

NetworkStream str = tcp.GetStream();
str.Write(fsdata, 0, fsdata.Length);