CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
花落谁家,你作主! 盛大widget设计大赛英雄榜
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C++ Builder >  基础类

用TServerSocket收大量数据时老掉数据,怎么办?

楼主Tony_2002(Builder迷)2002-05-29 11:00:50 在 C++ Builder / 基础类 提问

关于SendText,我用SendText发送一个文件时,发现ServerSocket接收爱掉数据,  
  加了延时好了许多,但是在我接收同时还在运行其他程序时,还会发生掉数据的现象。请问这是因为我的  
  程序是单线程的原因吗?有没有什么办法解决呢? 问题点数:20、回复次数:8Top

1 楼tiger_qi(老虎)回复于 2002-05-29 11:51:03 得分 5

最好用多线成来解决把  
   
  Top

2 楼tiger_qi(老虎)回复于 2002-05-29 11:54:10 得分 5

在创建线成的时候把TClientsocket或TServerSoket传递到线成里面在那里面执行数据的传输把  
   
  good     luckTop

3 楼tiger_qi(老虎)回复于 2002-05-29 11:54:57 得分 0

在创建线成的时候把TClientsocket或TServerSoket传递到线成里面在那里面执行数据的传输把  
   
  good     luckTop

4 楼Tony_2002(Builder迷)回复于 2002-05-29 12:25:47 得分 0

怎么把TClientsocket或TServerSoket传递到线程里啊,能给个例子吗?谢谢Top

5 楼quietman(小高同志)回复于 2002-05-29 12:31:26 得分 0

学习学习Top

6 楼superaf(阿斐)回复于 2002-05-29 12:42:23 得分 5

 
  SOCKET   一次传递的最大数据包是2k,你看看你送的时候是否超过了。Top

7 楼caoguangxin(广昕)回复于 2002-05-29 13:27:49 得分 0

实际上TServerSocket是很稳定的,不会出现丢数据的现象,很多人抱怨丢数据的原因是许多人不知道接收数据的时候,如果只接收一次可能是不完全的,要多收几次肯定会完整的。Top

8 楼tiger_qi(老虎)回复于 2002-05-29 13:31:24 得分 5

/---------------------------------------------------------------------------  
   
  #include   <vcl.h>  
  #pragma   hdrstop  
   
  #include   "IcThread.h"  
  #include   "IcOp.h"  
   
  #pragma   package(smart_init)  
  //---------------------------------------------------------------------------  
   
  //       Important:   Methods   and   properties   of   objects   in   VCL   can   only   be  
  //       used   in   a   method   called   using   Synchronize,   for   example:  
  //  
  //             Synchronize(UpdateCaption);  
  //  
  //       where   UpdateCaption   could   look   like:  
  //  
  //             void   __fastcall   CheckCard::UpdateCaption()  
  //             {  
  //                 Form1->Caption   =   "Updated   in   a   thread";  
  //             }  
  //---------------------------------------------------------------------------  
   
   
  //这里我重载了线成构造函数,把HANDLE   h句并传递进去了,你可以同样把你希望//的控件传进来的  
  __fastcall   CheckCard::CheckCard(bool   CreateSuspended,HANDLE   h)  
                  :   TThread(CreateSuspended)  
  {  
              flag     =   -1       ;  
              H=h;  
  }  
  //---------------------------------------------------------------------------  
  void   __fastcall   CheckCard::Execute()  
  {  
   
                /*检测IC卡是否插入  
                    Lparam     =   1   有卡  
                    Lparam     =   0   无卡  
                    flag         =     1  
                    */  
                  while     (!this->Terminated)  
   
                  {  
                      if     (HaveIC())  
                          {  
                                  SendMessage(H,WM_USER   +     100,flag,1);  
                                  flag   =   1;  
   
                              }  
                        else  
   
                          {  
   
   
                                SendMessage(H,WM_USER   +     100,flag,0);  
                                flag   =   0;  
   
                              }  
   
   
   
   
   
   
                  }  
                  //----   Place   thread   code   here   ----  
  }  
  //-----------------------------------------------Top

9 楼Tony_2002(Builder迷)回复于 2002-05-29 14:09:23 得分 0

superaf(啊斐)我一次传的数据绝对没有2k,关键是数据在被连续不断的发送  
  也没有机会象(广昕)说的那样多收几次。  
  谢谢tigerqi的例子,我会好好研究的。  
  谢谢大家。请继续讨论。Top

相关问题

  • 数据库连接超时,怎么办
  • 在绑定datagrid时,如果数据显示与数据源不符怎么办?
  • 删除数据量大时,sqlplus死掉,数据删不掉,该怎么办?
  • 我在使用datawindow删除数据时出现……怎么办?
  • 数据层操作过于耗时怎么办?
  • 请看备份数据库时出现的问题.怎么办?
  • 总是提示数据库超时怎么办?
  • 求助: 用ACCESS2003打开ACCESS数据库时,提示....怎么办?
  • 当数据段和附加段都大于64K时怎么办?
  • 请教Socket问题,同时发两个数据包的时候该怎么办?

关键词

  • 数据
  • checkcard
  • tserversoket
  • updatecaption
  • 传递
  • tclientsocket
  • 接收
  • 谢谢
  • fastcall
  • flag

得分解答快速导航

  • 帖主:Tony_2002
  • tiger_qi
  • tiger_qi
  • superaf
  • tiger_qi

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

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