0

Delphi 版本:XE2,Indy 版本:10.5.8.0。我有三个程序并且一切正常,直到互联网连接丢失。什么时候会发生,然后我会尝试发送消息,然后当互联网恢复时我无法重新连接。无法关闭程序(关闭程序后不可见,但将使用 100 cpu 使用率)。如果没有“尝试,异常”,则Socket Error #1053在 IdIRC1.Say 和 Close 上有一个。感谢帮助。

///Connection:

    procedure TForm1.Button5Click(Sender : TObject);
    begin
      try
        IdIRC1.Nickname := 'zzz';
        IdIRC1.Password := 'kkk';
        if IdIRC1.Connected then
          IdIRC1.Disconnect;
        IdIRC1.Connect;
        IdIRC1.Join('#' + edit3.Text);
      except
        ShowMessage('ggg');
      end;
    end;

///Send message:

procedure TForm1.Button3Click(Sender : TObject);
begin
 try
    IdIRC1.Say('#' + edit3.Text, edit2.Text);
    if (edit2.Text <> '') and (IdIRC1.Connected) then
    begin
      memo6.Lines.Add(edit2.Text);
      Edit2.Clear;
    end
    else
      ShowMessage('xxx');
 except
    ShowMessage('yyy');
 end;
end;



///On close:
  try
    IdIRC1.Disconnect;
  except
  end;
4

1 回答 1

0

当你在访问连接时遇到错误,例如因为连接丢失,你需要调用Disconnect() 并且你需要清除IOHandler.InputBuffer它是否还有未读数据。 Disconnect()不清除InputBuffer, 设计使然。如果InputBuffer不为空,Connected()即使物理套接字断开,也会返回 True。

于 2013-06-28T20:48:51.143 回答