我做了一个程序,其中用到了Tserversocket来连接多个客户端,我用一个数组来保存客户端,
现在出现一个问题了,程序偶尔在客户端登陆后,客户断开的时候,我这个程序也突然自动退出,
大家有没有碰到过这个问题,我急阿,在线等,因为这个程序几天后就要交付使用,求各位大虾
救救小弟

解决方案 »

  1.   

    贴段代码,我怀疑错在其中的
     ClientToSvr=record
         CHandle:Integer;                 //¿Í»§¶ËµÄÁ¬½Ó¾ä±ú
         CSocket:TCustomWinSocket;        //¿Í»§¶ËµÄÌ×½Ó×Ö
         CName:string;                    //¿Í»§¶Ë»úÆ÷Ãû
         CAddress:string;                 //¿Í»§¶ËIP
         CConnect:integer;                //¿Í»§¶ËÁª»ú±êÖ¾(0ΪδÁª»ú£¬·Ç0ΪÁª»ú£©
         CUsed:Boolean;                   //¿Í»§¶ËʹÓñêÖ¾
         CPhone:string;                   //¿Í»§¶Ë·Ö»úºÅÂë
         CWork:boolean;                   //¿Í»§¶ËÊÇ·ñÕª¹¤×÷״̬,£¨Ï°࣬Àë¸ÚµÈµÈ£©
         CConnFlag:boolean;                //¿Í»§¶ËÁ¬½Ó±êÖ¾
         CType:integer;                   //¿Í»§¶ËÁ¬½ÓÀàÐÍ
         CConnCount:integer;              //¿Í»§¶ËÁ¬½ÓµÄ×Ü´ÎÊý£¨88Ϊ¶Ï¿ª£©
      end;
       for i:=1 to conncount do
       begin
          if (not MemoClient[i].CConnFlag) then continue;
          if ConnectId>ConnCount then
          begin
             MemoClient[i].CConnFlag:=false;
             MemoClient[i].CWork:=false;
             Continue;
          end;
          if (MemoClient[i].CAddress=strip) or (strip='127.0.0.1') then
          begin
             ClientConnArr[Connectid].CHandle:=MemoClient[i].CHandle;
             ClientConnArr[connectid].CAddress:=StrIp;
             ClientConnArr[Connectid].CSocket:=MemoClient[i].CSocket;
             ClientConnArr[connectid].CName:=MemoClient[i].CName;
             ClientConnArr[Connectid].CConnFlag:=true;
             sgAlarmConn.Cells[0,ConnectId]:=sType+'½Ó¾¯Ï¯';
             iRect:=sgAlarmConn.CellRect(1,ConnectId);
             iRect.Left:=iRect.Left+12;
             iRect.Top:=iRect.top+5;
             sgAlarmConn.Canvas.StretchDraw(iRect,imgConn.Picture.Icon);
             sgAlarmConn.Cells[2,ConnectId]:='Á¬½ÓÕý³£';
             sgAlarmConn.Cells[3,ConnectId]:=StrIp;
             MemoClient[i].CConnFlag:=false;
             MemoClient[i].CWork:=false;
          end;
          sgAlarmConn.Refresh;
          break;
       end;其中,MemoClient和ClientConnArr是ClientToSvr类型的