如何通过TCP/IP协议进行图片传输,最好有源代码,我试拉半天,还是不行,只会传输文本文件

解决方案 »

  1.   

    文本文件和图片文件不都一样吗,都是先用FileStream读出byte,然后进行传送即可。
      

  2.   

    除了TCP/IP协议,你还能用什么?这个根本就不关TCP/IP协议的事
      

  3.   


    你可以参看一下这个:
    http://community.csdn.net/Expert/topic/4834/4834062.xml?temp=.8300287
      

  4.   

    传输图片时可以更改图片的扩展名,传送到目的地后再改回原来的扩展名(例如:a.bmp改为a.bmp.aqs).我原先作时也碰到过这种问题,我是用webservices来实现的,但是IIS屏蔽了一些文件的传送,更改扩展名后就没有问题了,扩展名你可以随便写就行。
      

  5.   

    Socket函数中有一个专门传输文件的函数,好像叫TransformFile(),把图片当成文件来传输也可以。
      

  6.   

    应该是你在传输的时候读取字节没有完全读取。seek
      

  7.   

    //发送方 
    FileStream myFileStream = new FileStream(path, FileMode.Open,
                    FileAccess.Read, FileShare.None);            int[] b = new int[myFileStream.Length];
                for (int i = 0; i < b.Length; i++)
                    b[i] = myFileStream.ReadByte();
                myFileStream.Close();
                char[] c = new char[b.Length];
                for (int i = 0; i < b.Length; i++)
                    c[i] = (char)b[i]; //侦听695号端口
                    TcpListener tcpServer = new TcpListener(695);
                    tcpServer.Start();                        //接收阻塞,知道有人接
                    TcpClient clientConn = tcpServer.AcceptTcpClient(); Byte[] byteResponse = Encoding.ASCII.GetBytes(c);//必须要用char格式
                    clientConn.GetStream().Write(byteResponse, 0, byteResponse.Length);
                    clientConn.Close();//接收方
    TcpClient client = new TcpClient();
                client.Connect(new IPEndPoint(serverIp, 695));
    Stream strm = client.GetStream();
     //读取流,并转换为ASCII
                byte[] inputBuffer = new byte[27780];
                int bytes = strm.Read(inputBuffer, 0, inputBuffer.Length);程序比较烂,是根据传输字符串改的
      

  8.   

    为什么要转到手呢你直接读出byte,然后传送即可,为什么还要转成char。
      

  9.   

    发送端大致如下:FileStream myFileStream = new FileStream(path, FileMode.Open,
    FileAccess.Read, FileShare.None);byte[] b = new byte[myFileStream.Length];
    myFileStream.Read( b, 0, myFileStream.Length );
    myFileStream.Close();//侦听695号端口
    TcpListener tcpServer = new TcpListener(695);
    tcpServer.Start();//接收阻塞,知道有人接
    TcpClient clientConn = tcpServer.AcceptTcpClient();clientConn.GetStream().Write( b, 0, b.Length);
    clientConn.Close();
      

  10.   

    Byte[] byteResponse = Encoding.ASCII.GetBytes(c);
    这样转换是有问题的,ASCII并不能解释所有字符!
    http://henryfan.cnblogs.com/archive/2006/07/04/442337.html
    支持对象的传输和接收。
      

  11.   

    多谢Knight94(愚翁),真是一句话点醒梦中人亚
    可还有一个问题,就是在 int bytes = strm.Read(inputBuffer, 0, inputBuffer.Length);
    必须加个暂停,不然就只能传1460个字节,多拉不能传,为什么?
    有没有解决的办法
      

  12.   

    Knight94(愚翁),有没有qq?我的qq号是79400444,能不能加我,我现在做的程序估计以后还有很多问题要问你
      

  13.   

    多谢各位,结贴,特别谢谢Knight94(愚翁)