本人服务端用TSocketServer作为服务连接
而客户端用TClientSocket来连接服务端,但是本人想自动连接服务端,因为网络有可能不通或服务端暂时未启动,本人想使用定时器来自动连接:本人作法是定时执行以下代码:
var
  i,len:word;
  msg:string;
  buf:array of char;
begin    //向所有客户端发送消息
  msg:=Trim(S);
  Len := Length(Msg);
  SetLength(buf,Len + 2);
  Move(Len,buf[0],2);
  Move(Msg[1],buf[2],Len);
  try
   i:=ClientSocket.Socket.SendBuf(buf[0],Len + 2);
   if i<=0 then
   begin
     ClientSocket.Active := false;//这行不写效果也一样
     ClientSocket.Active := true;
   end;
  Except
  end;
但是调用几次后就报错,Asynchronous Socket 10060
请问怎么解决能实时自动连接。其二,一旦连接,如果网络断线或软件非法关闭时,服务端也会报错,这个问题怎么解决:
或者针对本人的要求,谁有更好的方案或代码给本人一份,本人万分感谢。

解决方案 »

  1.   

    服务器端需要对错误进行处理,发生错误要关闭该连接的Socket
      

  2.   

    其二,一旦连接,如果网络断线或软件非法关闭时,服务端也会报错,这个问题怎么解决:服务端的ServerSocketClientError事件中要写上 ErrorCode := 0; 这一句。
      

  3.   

    ErrorCode 这个有没有一个详细的说明,什么代码代表什么错误。
      

  4.   

    可以用SysErrorMessage(ErrorCode)来返回错误信息