Q&A

  • Socket통신에 대해서...
서버소켓과 클라이언트소켓을 이용해서 프로그램을 하나씩 만들었습니다.

서버에서는 클라이언트가 접속되면 접속된 컴의 IP를 화면에 보여주고

접속된 컴으로 '0'을 보냅니다.

클라이언트가 서버에서 보낸 '0'을 정상적으로 받으면 클라이언트 IP를 서버로

다시 보내게 했습니다.

그런데 제가 궁금한건 클라이언트가 정상적으로 종료되면

클라이언트가 연결이 끊어졌다는걸 알 수 있는데

비정상적으로(컴이 꺼진다거나...등...) 종료되면 그걸 알수 있는 방법이 있는지...

다시 말해서 서버에 접속된 클라이언트 리스트로 특정신호를 보내

신호를 보낸후 3초후에 아무 신호가 오지 않으면

그 클라이언트는 죽언걸로 간주하고 서버리스트에서 삭제 할려고 하는데..

잘 안되네요...

고수님들의 조언 바랍니다..될수 있는한 자세히.....



1  COMMENTS
  • Profile
    silver 2000.10.20 21:43
    박일용 wrote:

    > 서버소켓과 클라이언트소켓을 이용해서 프로그램을 하나씩 만들었습니다.

    > 서버에서는 클라이언트가 접속되면 접속된 컴의 IP를 화면에 보여주고

    > 접속된 컴으로 '0'을 보냅니다.

    > 클라이언트가 서버에서 보낸 '0'을 정상적으로 받으면 클라이언트 IP를 서버로

    > 다시 보내게 했습니다.

    > 그런데 제가 궁금한건 클라이언트가 정상적으로 종료되면

    > 클라이언트가 연결이 끊어졌다는걸 알 수 있는데

    > 비정상적으로(컴이 꺼진다거나...등...) 종료되면 그걸 알수 있는 방법이 있는지...

    > 다시 말해서 서버에 접속된 클라이언트 리스트로 특정신호를 보내

    > 신호를 보낸후 3초후에 아무 신호가 오지 않으면

    > 그 클라이언트는 죽언걸로 간주하고 서버리스트에서 삭제 할려고 하는데..

    > 잘 안되네요...

    > 고수님들의 조언 바랍니다..될수 있는한 자세히.....



    서버에서 클라이언트의 상태를 알수 있는 방법은 클라이언트로 부터 주기적으로 신호를

    받음으로써 가능하지 않을 까요?



    예를 들면 연결후 클라이언트는 UDP포트로 살았다는 신호를 보내는것이죠..

    서버는 일정한 시간안에 클라이언트로 부터 신호가 오지 않으면 죽은 것으로 간주하면 되겠죠.. 실제 통신포트는 하나 더 있어야 게죠..



    도움이 되었는지 모르겠군요..



    사용하는 컴포넌트가 TClientSocket이면 가