CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  网络通信/分布式开发

WinSocket网络通讯问题!急!!

楼主cgfhz(→.Net^_^)2005-05-14 11:53:36 在 Delphi / 网络通信/分布式开发 提问

Server端:  
  procedure   TServerThread.ClientExecute;  
  var  
        Stream:   TWinSocketStream;  
        sSendText:   string;  
        procedure   FailProcess;  
        begin  
            if   Assigned(ClientSocket)   then  
            begin  
                if   ClientSocket.Connected   then  
                    ClientSocket.Close;  
            end;  
            Terminate;  
      end;  
  begin  
      inherited   FreeOnTerminate   :=   True;  
      while   (not   Terminated)   and   ClientSocket.Connected   do  
      begin  
          Stream   :=   TWinSocketStream.Create(ClientSocket,giWaitTime);  
          try  
                try  
                      if   Stream.WaitForData(giWaitTime)   then      
                      begin  
                          ....//处理操作  
                          ClientSocket.SendText(sSendText);  
                      end  
                      else  
                          FailProcess;  
                except  
                    on   E:   exception   do  
                    begin  
                            Memo1.lines.add('监听过程中出现异常:'   +   E.Message);  
                            Exit;  
                    end;  
                end;  
          finally  
                if   not   Terminated   then  
                    FailProcess;  
                Stream.Free;  
          end;  
      end;  
  end;  
  Client端:  
  procedure   TFrm_Main.BitSendClick(Sender:   TObject);  
  var   st:   string;  
  begin  
      ClientSocket1.Address   :=   Trim(Edt_ip.Text);  
      ClientSocket1.Port   :=   StrtoInt(Edtport.Text);  
      if   not   ClientSocket1.Active   then  
            ClientSocket1.Active   :=   True;  
   
      st   :=   MemoSend.Text;  
      ClientSocket1.Socket.SendText(st);  
  end;  
  问题:每次请求服务,client端请求二次server端才能接收到消息。单步跟踪后发现:第一次请求每次到“if   Stream.WaitForData(giWaitTime)   then”就会执行失败,第二次就成功了!请高手指点如何解决??谢了! 问题点数:100、回复次数:6Top

1 楼godear()回复于 2005-05-14 13:00:34 得分 20

这个样,   没法找问题Top

2 楼cgfhz(→.Net^_^)回复于 2005-05-14 13:51:19 得分 0

//客户端为非阻塞式  
  procedure   TFrm_Main.ClientSocket1Read(Sender:   TObject;  
      Socket:   TCustomWinSocket);  
  begin  
      Memo1.Lines.Add(FormatDatetime('YYYYMMDD',date)+':'+Socket.ReceiveText);  
      ClientSocket1.Active   :=   False;  
  end;Top

3 楼cgfhz(→.Net^_^)回复于 2005-05-15 22:22:35 得分 0

哎~没人碰到过这个问题吗?还是我没说清楚??Top

4 楼cgfhz(→.Net^_^)回复于 2005-05-16 14:35:37 得分 0

问题解决,把客户端发送的请求信息写到ClientSocket1Write事件中去就OK了!怎么会没人知道?郁闷~~Top

5 楼sandyboy(雨霆)回复于 2005-05-16 16:09:03 得分 30

没做过网络通讯的项目。学习。。。。。。Top

6 楼pdbird(老巢)回复于 2005-05-17 13:24:36 得分 50

是因为网络响应时间没有跟上的原因吧。  
  Top

相关问题

  • 网络通讯?
  • 请教高手!有点提示就给分!关于DOS下C语言通过socket实现网络通讯的问题。急!!!!
  • 新手:网络通讯编程?
  • 有关“网络通讯”的问题:
  • 如何用cb实现网络通讯?
  • 网络通讯问题,TcpServer和Tcpclient
  • 网络通讯入门问题
  • 问个网络通讯的问题?
  • UDP/TCP网络通讯安全问题
  • 学习网络通讯应如何入手?

关键词

  • clientsocket
  • failprocess
  • giwaittime
  • stream
  • 问题
  • begin
  • terminated
  • procedure
  • then

得分解答快速导航

  • 帖主:cgfhz
  • godear
  • sandyboy
  • pdbird

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

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