Q&A

  • Socket Event에 관해 답변좀 부탁드립니다.
procedure send(Sender: Tobject);
begin
       ClientSocket1.Socket.SendText('자료보내당~');
       sleep(2000);

       // 다음라인이 실행하나요 아님 ClientSocket1Read 이벤트가 먼저 실행되나요?
       for p:=1 to 10 do
       begin
           sleep(1000);
           Inc(DelayTime);
       end;

end;

procedure TMainC2Form.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
begin

end;

제가 구현할여는데 막히는 부분이네요.
socket으로 데이타를 보낸뒤 서버에서 처리를하고 다시 ClientSocket1Read와서 서버에서 가져온 결과를 처리합니다. 그러나 예를들어 서버에서 Error가나서 Data를 다시 보내오지 못할시 일정시간이 지나면 프로그램이 그만 실행되게 하고 싶습니다.
1  COMMENTS
  • Profile
    윤수아 2003.04.28 23:43
    웡...
    ClientSocket1.Socket.SendText('자료보내당~'); 하면 서버쪽으로 데이타를 보냅니다.
    데이타를 받은 서버는 다시 ClientSocket에게 데이타를 줍니다.
    이 시간이 정확히 어느정도 걸린다고는 말씀 드리기 어렵습니다...
    또 Sleep 함수를 이용해 Delay를 거는 것 또한 좋은 방법이라고 말씀 드리기 어렵구요...

    GettickCount를 써써 데이타 보내 시간과 데이타 받는 시간을 저장해놓으시고...Timer등을 통해 그 시간 사이의 갭을 구하는 식으로 하셔야 할 것 같아요.
    주기적으로 데이타를 보내는 거라면 Timer도 계속 돌리시면 되고...
    그런 것이 아니라면 Send하실 때 Timer 돌리시고...데이타 들어올 떄나 혹은
    시간 경과 되었을 때 Timer 꺼주시는 식으로 하시면 되요...
    자세한 상황은 잘 몰라서 루틴은 올리지 않을께요...
    루틴을 받아보시고 싶으시면...질문을 좀 더 자세히 해주세요...