Q&A

  • Clientsock을 NonBlocking 모드로 이용시 timeout기능...
안녕하세요. 델파이 초보자입니다.



Clientsock을 NonBlocking 모드로 이용하여 Server쪽과 통신하는 프로그램을 만들었습니다. Client에서 Server쪽으로 Request를 Looping을 돌면서 여러건을 보내고 각각의 결과

를 받아 처리하고자 합니다.

순서대로 내가 보낸 Request에 대한 응답을 Time을 줘서 몇초동안 응답이 없을경우 어

떤처리를 해주고 싶습니다.



이럴경우 어떻게 해야하나요?



도와주세요.





3  COMMENTS
  • Profile
    타락천사 2000.12.27 23:22
    안녕하세여.. 타락임다..^^



    NonBlocking 모드에선 Send함수에 Socket의 패킷(정확히 버퍼)에 데이터를 쓰고



    종료됩니다. 즉, 데이터가 서버에 도착했는지 체크하지 않져..



    글구 패킷에 쓰여진 데이터가 처리되는데는 입출력 디바이스를 통해야 합니다..



    즉 하드웨어적인 처리가 들어가는데, 비해 루프는 램에서 실행되므로 무쟈게 빠릅니다.



    결론적으로 ..님이 바라는 결과가 나오지 않을지도 모릅니다..



    즐푸하세여..^^



    타락천사...

  • Profile
    onlyna 2000.12.27 23:51
    안녕하세요. 타락천사님.



    그렇군요. 저는 C의 구조체에 해당하는 Record Type으로 루핑을 돌면서 SendBuf를 하였

    더니 Server에서 제가 Send한 Data를 정상적으로 받지를 못하더라구요. 그래서 Sleep을

    줬더니 Send한 Data를 받기는 하더라구요.



    타락천사님 그럼 어떻게 해야하나요.

    제가 Record Type의 Data를 보내면 Server쪽에서는 그 Data로 판단하여 내가 요구한 Re

    quest에 대한 Response를 C의 구조체로 Send해 줍니다.

    Server에서 Send해 주는 Data를 받아 처리하려고 합니다. 그리고 Server쪽에서 문제가 생겨 Response를 해주지 않을 경우 그 응답시간을 check하여 어떤 표시를 해주고 싶습니다.



    한번 더 조언을 부탁드립니다.



    타락천사 wrote:

    > 안녕하세여.. 타락임다..^^

    >

    > NonBlocking 모드에선 Send함수에 Socket의 패킷(정확히 버퍼)에 데이터를 쓰고

    >

    > 종료됩니다. 즉, 데이터가 서버에 도착했는지 체크하지 않져..

    >

    > 글구 패킷에 쓰여진 데이터가 처리되는데는 입출력 디바이스를 통해야 합니다..

    >

    > 즉 하드웨어적인 처리가 들어가는데, 비해 루프는 램에서 실행되므로 무쟈게 빠릅니다.

    >

    > 결론적으로 ..님이 바라는 결과가 나오지 않을지도 모릅니다..

    >

    > 즐푸하세여..^^

    >

    > 타락천사...

  • Profile
    타락천사 2000.12.28 02:29
    안녕하세여.. 타락임다..^^



    젤 편하고 일반적인 방법이 타이머와 플래그를 쓰는거져..



    Flag 로 부울린 변수 하나 선언합니다..



    var bFlag : Boolean;



    글구 메세지를 받는 이벤트가 발생되면 bFlag를 True로 세팅합니다..



    글 타이머는 일정한 인터벌 마다 타이머 이벤트를 발생시키며...



    bFlag가 True면 False로 세팅하고, False이면 서버에 피드백이나 핑을 날리면 돼져..



    글구 타임은. TDateTime 으로 선언합니다..



    var RecTime: TDateTime;



    글구 메세지를 받는 이벤트가 발생하면 RecTime := Now; 시간을 넣어 둡니다..



    글구 서버에 피트백이나 핑을 날릴때 Now - RecTime 하면 경과 시간이 나오져..^^



    껌이예여..^^



    즐푸하세여..



    타락천사..