CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  网络编程

winsock 控件 (c/s 客户端的询问信息服务期响应,有纰漏!)

楼主mlxsx()2006-03-15 15:51:16 在 VB / 网络编程 提问

 
          在c/s结构中,客户端发送文件发送请求,单个信息的时候发送出去服务器响应很及时,很准确!  
   
          但是使用数组中的文件请求,顺次发送,最后一个请求发送完成!服务端才会反映响应请求,而且只是在最后一个都发送完成的时候才会响应,搞的我两个文件的发送,是第一个文件的名字,最后一个文件的内容!处理的是第一个请求,只在最后才响应发送成功的信息开始存储进去的文件内容的发送!  
   
          请问这种逻辑错误好解决吗?  
   
          难道是因为我一直在发送文件请求,发送数据,所以服务端的控件无法检测数据是否接受完毕!  
   
          多个文件的发送,我以为有数据到达就会触发服务端的响应机制!  
   
          代码没提取出来,所以无法让光临的前辈现场操刀!太大了!  
   
          所以,呵呵,咨询一下我的逻辑思路是不是很有大的问题,对了我主要是基于tcp协议的传输!    
   
  问题点数:60、回复次数:5Top

1 楼of123()回复于 2006-03-15 15:59:41 得分 10

应该还是你的代码用问题。注意一下   Index   是否正确,是否使用了同一个数组成员。Top

2 楼mlxsx()回复于 2006-03-15 17:03:27 得分 0

'将文件信息整理放进数组,通过遍历数组确定完成多个文件的发送!  
  Private   Sub   sure_Command_Click()  
   
          Dim   ffolder(4)   As   String  
          Dim   i   As   Integer  
          Dim   j   As   Integer  
          Dim   k   As   Integer  
           
          ffolder(0)   =   Trim(fname_text0.Text)  
          ffolder(1)   =   Trim(fname_text1.Text)  
          ffolder(2)   =   Trim(fname_text2.Text)  
          ffolder(3)   =   Trim(fname_text3.Text)  
          ffolder(4)   =   Trim(fname_text4.Text)  
           
               
          For   k   =   0   To   4  
                  If   ffolder(k)   <>   ""   Then  
                          Call   SendQueSendFileCmd(ffolder(k),   MAX_FRAME_LEN,   Trim(pho_text.Text))  
                          Debug.Print   "文件"   &   k   &   "发送完毕!"  
                  End   If  
          Next  
           
          Load   sendFileProgressDlg  
          sendFileProgressDlg.Label1   =   "正在发送请求给服务器"  
          sendFileProgressDlg.Show   vbModal  
   
   
  End   Sub  
   
  我确定这个发送文件请求的index,没有错误!   of123(),要不然你给我邮箱地址,我把代码给你看看!Top

3 楼mlxsx()回复于 2006-03-21 10:52:32 得分 0

用winsock基于文件的传输,连续的文件怎么传递,我的传递结果执行完了以后是被封装了在一个文件里面???Top

4 楼homezj(小吉)回复于 2006-03-21 12:51:21 得分 50

有数据到达就会触发服务端的响应机制,这点是不容置疑的,但是要做出响应动作必须得有获得CPU时间的机会,VB是单线程工作的,在处理发送数据时,没有机会去处理数据到达事件。同样,发送数据时,若没有释放CPU,也同样不会立即发送,只会让数据在缓冲中堆集,多条数据最终会连接在一起发送。  
  解决办法很多:  
  1、插入Doevents是一个最简单的解决办法,但也可能会难以控制请求与响应的流程顺序,是否适用要根据情况酌情考虑。  
  2、若对顺序性要求很高,采用应答事件驱动方式逐条收发,是最稳绥也最常用的办法。这虽然也算自动的批量处理,但会使通讯效率下降。  
  3、对数据定义一种带有识别标志的头部信息,收发双方可根据头部信息自行分析数据类型与顺序,再统一处理。这种方式可以一次性发送多条请求,也可分辨出收到的响应是哪条请求的响应。这才是真正意义上的批处理。Top

5 楼mlxsx()回复于 2006-03-23 09:56:14 得分 0

to   homezj  
   
  呵呵,谢谢啊,这个帖子我天天看着看统计数据,但是一直以为没有人响应(可能眼睛看错了……)  
   
  恩,我被逼急了,然后就断点一步一步的跟踪调试,把逻辑的走势和自己想要的结果硬靠,后来就调通了,刚好是你所描述的第2种方式!应答的响应方式,因为我对于请求发送成功了还需要处理缓冲区里面所封装的,那么联合发送的可能混乱的方式我对自己没绝对的把握,毕竟vb没熟悉几天,而且领导说了工作和学习不一样,要出效率!  
   
  呵呵,谢谢大家了!  
   
  问题解决了,理论补充了,圆满结帖   :)Top

相关问题

  • C#无响应问题
  • c/s模式消息响应方法
  • C# 不能响应MapX的MouseWheelEvent
  • C/C++程序编译器对响应中断的保护
  • 如何用c++builder写的线程如何响应消息
  • 请问在Visual C#中如何使ComboBox控件响应回车????
  • 请教C/S结构的事件响应顺序??Listen……
  • c#里怎么重写控件的响应函数?
  • >>==============>>有谁知道c#中,控件事件的响应机制?>>=====================>>
  • C#里可以实现类似VC++的消息响应吗?

关键词

  • 文件
  • 数据
  • 逻辑
  • 代码
  • 解决
  • 信息
  • 响应
  • ffolder
  • 请求
  • 发送

得分解答快速导航

  • 帖主:mlxsx
  • of123
  • homezj

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo