• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 为什么我使用mscomm控件编写的程序可以传送小文件,传送大文件就出错?

为什么我使用mscomm控件编写的程序可以传送小文件,传送大文件就出错?

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了 为什么我使用mscomm控件编写的程序可以传送小文件,传送大文件就出错?等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 为什么我使用mscomm控件编写的程序可以传送小文件,传送大文件就出错?
描述:

为什么我使用mscomm控件编写的程序可以传送小文件,传送大文件就出错?


解决方案1:

转:数据的传送
  虽然基于TCP/IP连接协议(流套接字)的服务是设计客户机/服务器应用程序时的主流标准,但有些服务也是可以通过无连接协议(数据报套接字)提供的。先介绍一下TCP socket 与UDP socket 在传送数据时的特性:Stream (TCP) Socket 提供双向、可靠、有次序、不重复的资料传送。Datagram (UDP) Socket 虽然提供双向的通信,但没有可靠、有次序、不重复的保证,所以UDP传送数据可能会收到无次序、重复的资料,甚至资料在传输过程中出现遗漏。由于UDP Socket 在传送资料时,并不保证资料能完整地送达对方,所以绝大多数应用程序都是采用TCP处理Socket,以保证资料的正确性。一般情况下TCP Socket 的数据发送和接收是调用send() 及recv() 这两个函数来达成,而 UDP Socket则是用sendto() 及recvfrom() 这两个函数,这两个函数调用成功发挥发送或接收的资料的长度,否则返回SOCKET_ERROR。
int PASCAL FAR send( SOCKET s, const char FAR *buf,int len, int flags );
参数:s:Socket 的识别码
buf:存放要传送的资料的暂存区
len buf:的长度
flags:此函数被调用的方式 
  对于Datagram Socket而言,若是 datagram 的大小超过限制,则将不会送出任何资料,并会传回错误值。对Stream Socket 言,Blocking 模式下,若是传送系统内的储存空间不够存放这些要传送的资料,send()将会被block住,直到资料送完为止;如果该Socket被设定为 Non-Blocking 模式,那么将视目前的output buffer空间有多少,就送出多少资料,并不会被 block 住。flags 的值可设为 0 或 MSG_DONTROUTE及 MSG_OOB 的组合。
int PASCAL FAR recv( SOCKET s, char FAR *buf, int len, int flags );
参数:s:Socket 的识别码
buf:存放接收到的资料的暂存区
len buf:的长度
flags:此函数被调用的方式 
  对Stream Socket 言,我们可以接收到目前input buffer内有效的资料,但其数量不超过len的大小。

解决方案2:

我也碰到了这个问题,用mscomm通信的时候,如果传输内容较长,容易出现丢失数据的现象
没有办法,只好用api写了一个


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 为什么我使用mscomm控件编写的程序可以传送小文件,传送大文件就出错?

相关文章

  • 2017-06-04 [out]与[out,retval]
  • 2017-06-04 关于光盘右键菜单中的“弹出”菜单项?
  • 2017-06-04 IActiveScriptSite问题
  • 2017-06-05 请问开了线程后第一次运行没问题,第二次有些语句运行不了是什么问题
  • 2017-06-05 在idl什么时候必须import"oaidlidl"和import"ocidlidl"?
  • 2017-06-04 ActiveX编程
  • 2017-06-05 如何能读取用户为system的进程的路径
  • 2017-06-05 郁闷好多天了~请教Win32汇编调用VC写的DLL问题
  • 2017-06-05 初级错误,请大侠指教。
  • 2017-06-04 ATL与MFC结合开发插件

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • _______高手快来呀!!!如何在Service中调用GetActiveObject得到当前用户的ROT
    • 主线程里能探测到辅助线程里的事件信号吗——————?
    • 如何由一个COM组件的DLL文件得到其clsid或progid
    • 控件接口重复,LINK错误怎么办?
    • 如何注册调用dll模块,给源码
    • 调用DLL中的API时,传递给它的参数为什么一定要堆上的?
    • 为什么我必须将webserver加为受信站点,才能通过脚本vbscipt调用我自己编的COM不是activeX???
    • 一个进程的问题:)急急急
    • 关于容器问题
    • SubClass是何意啊??

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有