我用winsock 传文件:
打开文件是用:
Open FileName For Binary As #1
传文本文件可以,但是传送图片或者zip文件则打不开,请高手指点?在线等。

解决方案 »

  1.   

    是用iPacket组件看看,该组件可以读写二进制文件,可以把多个文件或者属性打包成一个二进制字节流,同时也可以把二进制字节流还原。下载http://www.ipassport.net/ipacket.rar
      

  2.   

    你在SendData的时候是怎么Send的?
    使用数组么,注意数组序号的问题了么?
    一次传送的字节数多大?(不能太大)
    你是用字符方式传输还是用Byte数组传输?
    .
    .
    .
    未知问题太多,把代码放上来,大家来找差
      

  3.   

    感谢大家,下面是发送文件的代码,请各位高手指点:这是发送端的代码:
        Open FileNname For Binary As #1       
            Do While Not EOF(1)
                DataChunk = Input(MAX_CHUNK, #1)   'MAX_CHUNK是一次发送的最大自节4096
                SendData DataChunk                 '发送当前数据
                Pause 200
                DoEvents
            Loop 
            
            SendData "CloseFile,"                  '告诉接收端发送完毕
        Close #1这是接受端的代码:(实际程序中稍复杂一点,还有一些判断何时打开、关闭文件的代码,此处略)Private Sub winsock_DataArrival(ByVal bytesTotal As Long)    winsock.GetData NewArrival, vbString    Open FileName For Binary As #1
             Put #1, , NewArrival
        Close #1End Sub
      

  4.   

    Private Sub winsock_DataArrival(ByVal bytesTotal As Long)    winsock.GetData NewArrival, vbString  ’接收时,数据类型为vbbyte,而且由于你不可能在一个winsock_DataArrival中接受到所有的数据,所以会将数据从文件头部重复写入。
        Open FileName For Binary As #1
             Put #1, , NewArrival
        Close #1End Sub
      

  5.   

    接收端写文件时,不应该总从位置一写起(Put #1, , NewArrival),应该该为Put #1,lpos , NewArrival,其中,lpos初值为1,每次收到数据,lpos=lpos+bytetotal