2013-06-28 1 views
0

델피 버전 : XE2, 인디 버전 : 10.5.8.0. 인터넷 연결이 끊어 질 때까지 세 가지 절차가 있으며 모두 제대로 작동합니다. 그것이 일어날 때 그리고 그 후에 나는 인터넷이 돌아올 때 나는 다시 연결할 수없는 메시지를 보내려고 시도 할 것이다. 프로그램을 닫을 수 없습니다 (닫기 프로그램을 실행 한 후에는 보이지 않지만 100 cpu 사용을 사용합니다). "try, exception"이 없으면 IdIRC1.Say와 Close에 Socket Error #1053이 있습니다. 도와 주셔서 감사합니다. 당신은 그런 연결이 끊어 때문에 같은 연결을 액세스 할 경우에 에러가 발생하면델피 인디 IRC

///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; 

답변

0

, 당신은 여전히 ​​거기에 읽지 않은 데이터가있는 경우에는 IOHandler.InputBuffer을 취소 할 필요가Disconnect()를 호출해야합니다. Disconnect()은 의도적으로 InputBuffer을 지우지 않습니다. InputBuffer이 비어 있지 않으면 실제 소켓이 연결되어 있지 않은 경우에도 Connected()이 True를 반환합니다.

+0

idirc1.Disconnect(); IdIRC1.IOHandler.InputBuffer.Clear; 여전히 인터넷 연결이 끊긴 동안 IdIRC1.Say 사용 후 소켓 오류 # 1053 있습니다. – user2512579

+0

전에 IdIRC1.Say 인터넷을 사용할 수 있는지 확인 기능을 추가했습니다. 신의 축복이 더 이상 소켓 오류 # 1053 오류 - .- – user2512579

+0

연결이 끊어지면 연결을 끊었다가 다시 연결해야 새로운 데이터를 다시 보낼 수 있습니다 . 다시 연결 부분을 무시하는 것 같네요. –