tempad
ReadyGo!技术成就梦想 >>PHP技术 >> 头疼3天,十万火急!关于serversocket 和clientsocket 网络连接问题,在线等待两个小时

头疼3天,十万火急!关于serversocket 和clientsocket 网络连接问题,在线等待两个小时

ReadyGo!技术成就梦想 网络搜索 efish 2008-1-14 16:25:42

头疼3天,十万火急!关于serversocket 和clientsocket 网络连接问题,在线等待两个小时

楼主wxjh(农民)2002-07-21 19:47:32 在 Delphi / 网络通信/分布式开发 提问

这几天在编写网络记费软件过程中,我使用的是  
  serversocket   和clientsocket控件     ,用serversocket作为管理端,clientsocket   作为用户端,当使用clientsocket向servesocket发送消息时,老是弹出对话框,"list   index   out   bounts(1),请教各位高手,是什么原因,而且,在服务器端上已经能够看到客户端的ip地址,但是客户端上还是显示"正在连接",过一会儿,就会自动的关闭连接, 问题点数:100、回复次数:7Top

1 楼johnsonrao(johnson)回复于 2002-07-21 19:54:43 得分 30

数组定义的边界错误,好好查一查程序  
  一般数组从0到count-1,如果你用了count就出错了Top

2 楼flinming(flinming)回复于 2002-07-21 19:58:23 得分 30

unit   Unit1;  
   
  interface  
   
  uses  
      Windows,   Messages,   SysUtils,   Variants,   Classes,   Graphics,   Controls,   Forms,  
      Dialogs,   Menus,   StdCtrls,   ScktComp,   ExtCtrls,   ComCtrls;  
   
  type  
      TForm1   =   class(TForm)  
          ClientSocket1:   TClientSocket;  
          ServerSocket1:   TServerSocket;  
          MainMenu1:   TMainMenu;  
          File1:   TMenuItem;  
          listen1:   TMenuItem;  
          connect1:   TMenuItem;  
          StatusBar1:   TStatusBar;  
          Memo2:   TMemo;  
          Memo1:   TMemo;  
          procedure   FormCreate(Sender:   TObject);  
          procedure   listen1Click(Sender:   TObject);  
          procedure   connect1Click(Sender:   TObject);  
          procedure   ClientSocket1Connect(Sender:   TObject;  
              Socket:   TCustomWinSocket);  
          procedure   ServerSocket1Accept(Sender:   TObject;  
              Socket:   TCustomWinSocket);  
          procedure   ClientSocket1Read(Sender:   TObject;   Socket:   TCustomWinSocket);  
          procedure   ServerSocket1ClientRead(Sender:   TObject;  
              Socket:   TCustomWinSocket);  
          procedure   ClientSocket1Error(Sender:   TObject;   Socket:   TCustomWinSocket;  
              ErrorEvent:   TErrorEvent;   var   ErrorCode:   Integer);  
          procedure   Memo1KeyDown(Sender:   TObject;   var   Key:   Word;  
              Shift:   TShiftState);  
          procedure   Memo2KeyDown(Sender:   TObject;   var   Key:   Word;  
              Shift:   TShiftState);  
   
      private  
          {   Private   declarations   }  
      public  
          {   Public   declarations   }  
      end;  
   
  var  
      Form1:   TForm1;  
      server:string;  
      isserver:boolean;  
   
   
   
  implementation  
   
  {$R   *.dfm}  
   
  procedure   TForm1.FormCreate(Sender:   TObject);  
  begin  
            listen1click(nil);  
  end;  
   
  procedure   TForm1.listen1Click(Sender:   TObject);  
  begin  
      memo1.Lines.Clear;  
      memo2.Lines.Clear;  
      listen1.Checked:=not   listen1.Checked;  
      if   listen1.Checked   then  
      begin  
          clientsocket1.Active:=false;  
          serversocket1.Active:=true;  
          statusbar1.Panels.Text:="listening......";  
      end  
      else  
      begin  
          if   serversocket1.Active   then  
              serversocket1.Active:=false;  
              clientsocket1.Active:=true;  
              statusbar1.Panels.Text:="";  
      end;  
  end;  
   
  procedure   TForm1.connect1Click(Sender:   TObject);  
  begin  
      if   clientsocket1.Active   then  
          clientsocket1.Active:=false;  
      if   inputquery("computer   to   connect   to   ","address   name:",server)   then  
          if   length(server)>0   then  
              with   clientsocket1   do  
              begin  
                  host:=server;  
                  active:=true;  
              end;  
  end;  
   
  procedure   TForm1.ClientSocket1Connect(Sender:   TObject;  
      Socket:   TCustomWinSocket);  
  begin  
        statusbar1.Panels.Text:="connected   to"+socket.RemoteHost;  
  end;  
   
  procedure   TForm1.ServerSocket1Accept(Sender:   TObject;  
      Socket:   TCustomWinSocket);  
  begin  
      isserver:=true;  
      statusbar1.Panels.Text:="connected   to"+socket.RemoteAddress;  
  end;  
   
  procedure   TForm1.ClientSocket1Read(Sender:   TObject;  
      Socket:   TCustomWinSocket);  
  begin  
      memo2.Lines.Add(socket.receivetext)  
  end;  
   
  procedure   TForm1.ServerSocket1ClientRead(Sender:   TObject;  
      Socket:   TCustomWinSocket);  
  begin  
      memo1.Lines.Add(socket.ReceiveText);  
  end;  
   
  procedure   TForm1.ClientSocket1Error(Sender:   TObject;  
      Socket:   TCustomWinSocket;   ErrorEvent:   TErrorEvent;  
      var   ErrorCode:   Integer);  
  begin  
      memo2.Lines.Add("error   connecting     to:   "+server);  
      errorcode:=0;  
  end;  
   
  procedure   TForm1.Memo1KeyDown(Sender:   TObject;   var   Key:   Word;  
      Shift:   TShiftState);  
  begin  
      if   key=VK_return   then  
      begin  
          if   isserver   then  
              serversocket1.socket.connections.sendtext(memo1.lines)  
          end;  
      end;  
   
  procedure   TForm1.Memo2KeyDown(Sender:   TObject;   var   Key:   Word;  
      Shift:   TShiftState);  
  begin  
      if   key=VK_return   then  
      begin  
          if   isserver   then  
              clientsocket1.Socket.SendText(memo2.Lines);  
          end;  
  end;  
   
  end.  
   
   
   
   
  Top

3 楼wxjh(农民)回复于 2002-07-21 20:00:51 得分 0

但是我没有使用count也没有使用书组Top

4 楼wxjh(农民)回复于 2002-07-21 20:02:52 得分 0

而且我的客户端和服务器端是两个工程Top

5 楼wxjh(农民)回复于 2002-07-21 20:04:18 得分 0

johnsonrao     :   flinming(明仔)   两位大哥,有没有qq号码:我的是53997882    
      我想好好的交流一下Top

6 楼johnsonrao(johnson)回复于 2002-07-21 20:08:27 得分 0

memo1.clear;  
  memo2.clear;  
   
  memo1.lines  
  memo2.lines  
   
  如果memo1或memo2没有加过一行就会出错  
   
  clear后count为0,memo1.lines.count-1为-1当然就出错了!Top

7 楼johnsonrao(johnson)回复于 2002-07-21 20:11:19 得分 40

在引用memo1.lines.count-1前要判断Count是否为0Top

责任编辑: efish 参与评论 查找更多:
相关文章
samba求救:能访问windows,但是windows不能访问linux samba求救:能访问windows,但是windows不能访问linux
在2000下如何做一个系统盘?我在操作系统版发了一个… 在2000下如何做一个系统盘?我在操作系统版发了一个,可是那里人太少了
有趣的问题,不知道你是否能解决。 有趣的问题,不知道你是否能解决。
谁能告诉我下面这段话的意思? 谁能告诉我下面这段话的意思?
???急,在线等待,谢谢 ???急,在线等待,谢谢
关于Enhydra的问题 关于Enhydra的问题
win2k双网卡,一个连接internet一个连接本地。可是i… win2k双网卡,一个连接internet一个连接本地。可是ie怎么有时候不好用。具体如下。在线等待回答给分!!!!
关于ODBC访问数据库的一个问题 关于ODBC访问数据库的一个问题
简单的表单关闭问题,怎样关闭mainform下的所有的ch… 简单的表单关闭问题,怎样关闭mainform下的所有的childform,谢谢!
哪些字符集是单字节的?us7ascii是么?哪些是双字节的… 哪些字符集是单字节的?us7ascii是么?哪些是双字节的?在哪儿能查到?
2秒记住本站域名

玩过泡泡龙吗?Readygo?Go! 再加上.Com.Cn的后缀,那就是大名小顶的ReadyGo.com.cn

分类导航
ReadyGo!技术成就梦想