两台机器都连接着Modem,通过MSComm控件拨号连接后,由一台机器向另一台机器发送一个文件。现在有两个问题:
  1.接收方的接收缓冲区默认大小为1024,在接收文件的过程中老是发生溢出,造成数据丢失。按照MSDN上的建议,可以在发生溢出时,将接收缓冲区的大小设成更大的值,但是程序出错:Modem端口打开时不允许改变接收缓冲区的大小,那我要是关了Modem端口,那连接不就断了吗?
  2.发送文件是发送从文件读出的二进制流,在发送二进制流之前,先以文本的方式发送文件名和文件的长度等信息,所以在接收端希望先将接收模式置成文本接收模式,接收文件名等信息,然后再改成以二进制接收模式接收文件的二进制流。可是现在发送端一下子将文件名信息和文件二进制流都发送过来了,接收端都以文本模式接收过来了,就没法及时的改成以二进制接收方式接收文件内容。麻烦,头疼,真真是头疼。希望各位DX帮忙解决,一定重分感谢。如果有毛遂自荐者,希望能帮忙实地调试,可负责接送,可重金酬谢!
[email protected]
QQ:21969082

解决方案 »

  1.   

    1.OPEN前设置好端口属性,包括接收缓冲区的大小;
    2。设定握手协议,文本传递完成后,由接收方向发送方发完成指令,CLOSE端口。重新拨号,双方以BINARY方式重新握手
      

  2.   

    接收缓冲区的大小一般设置为多少为好,可以保证不溢出,我现在暂时设为了10240
    握手协议怎么设定阿,这个通讯程序是别人帮我写的,我是在调试的时候发现的一些问题,不知该怎么改。接收方向发送方发送完成指令,这个指令是自己定义的,还是mscomm控件本身就有啊?以BINARY方式重新握手的意思是不是就是将接收方的接收模式设成二进制接收模式?
    谢谢你了,我的qq是21969082,我能不能跟你联系? :)
      

  3.   

    我也想学,你能给我发一个,我的E-MAIL是ZJG5072163.com