Q&A

  • 소켓으로 특정 사용자에게 귀속말을 구현하려면?
모두에게 메시지를 구현하는것은 Connections배열을 이용합니다.

그렇다면 특정 사용자에게 귀속말을 구현하려면 특정사용자가 Connections 배열의 몇번째 접속자인지 알아낼 함수같은것이 있을것 같은데

잘 모르겠네요.. 질문 답변란을 보면 TCustomWinSocket(SocketList.Objects.....)를 하던데

SocketList가 선언되어 있지 않다는 에러만 뜨네요..

어케해야될지... 그리구 uses절에 추가해야할 사항이 있다면 말씀해주세요..



4  COMMENTS
  • Profile
    박서규 2001.07.09 20:55
    초보 wrote:

    > 모두에게 메시지를 구현하는것은 Connections배열을 이용합니다.

    > 그렇다면 특정 사용자에게 귀속말을 구현하려면 특정사용자가 Connections 배열의 몇번째 접속자인지 알아낼 함수같은것이 있을것 같은데

    > 잘 모르겠네요.. 질문 답변란을 보면 TCustomWinSocket(SocketList.Objects.....)를 하던데

    > SocketList가 선언되어 있지 않다는 에러만 뜨네요..

    > 어케해야될지... 그리구 uses절에 추가해야할 사항이 있다면 말씀해주세요..

    >



    제 경우는 쉽게 해결해봤습니다..



    우선 connection으로는 접속의 연결과 끊김이 빈번하므로 쓰기에는 적당치 않구요... 그것보다는 접속할때의 소켓핸들을 가져와서 저장을 시킨다음에 특정사용자에게는 그 소켓핸들을 찾아서 해당 소켓으로만 자료를 전송해주면 될것 같군요..

  • Profile
    초보 2001.07.09 23:27
    박서규님 답변 감사드립니다..

    소켓핸들을 저장해서 이용하라고 하셨는데 어케하는지 감감합니다..

    소켓핸들을 어케 가져오고 또 그걸 어케 찾아서 상대방에게 보낼 수 있는지

    간단한 예를 가르쳐 주실 수 없겠습니까?

    부탁드립니다... ^^

    즐거운 하루되시길...





    박서규 wrote:

    > 초보 wrote:

    > > 모두에게 메시지를 구현하는것은 Connections배열을 이용합니다.

    > > 그렇다면 특정 사용자에게 귀속말을 구현하려면 특정사용자가 Connections 배열의 몇번째 접속자인지 알아낼 함수같은것이 있을것 같은데

    > > 잘 모르겠네요.. 질문 답변란을 보면 TCustomWinSocket(SocketList.Objects.....)를 하던데

    > > SocketList가 선언되어 있지 않다는 에러만 뜨네요..

    > > 어케해야될지... 그리구 uses절에 추가해야할 사항이 있다면 말씀해주세요..

    > >

    >

    > 제 경우는 쉽게 해결해봤습니다..

    >

    > 우선 connection으로는 접속의 연결과 끊김이 빈번하므로 쓰기에는 적당치 않구요... 그것보다는 접속할때의 소켓핸들을 가져와서 저장을 시킨다음에 특정사용자에게는 그 소켓핸들을 찾아서 해당 소켓으로만 자료를 전송해주면 될것 같군요..

  • Profile
    박서규 2001.07.10 01:01
    델이 없어서 코드상을 보여드리지는 못하겠구요..



    가정은 일단 델파이에서 기본적으로 쓰는 Server Socket을 쓴다는 가정하에 말씀드리죠..



    서버소켓에서는 Connection이 이루어질때 해당 이벤트에서 넘어오는 소켓의 속성에 보면 Socket.handle이던가요? 고것이 현재 서버소켓에 물리는 클라이언트 소켓의 고유번호가 됩니다. Connection으로 이루어지는 인덱스번호에 의한 클라이언트의 분별의 경우 disconnect가 이루어질경우 조금 애매해질 수 있죠... 그래서 실제 connection이 이루어질때 메모리 배열에 소켓의 핸들을 저장하구요... 그리고 클라이언트에서는 그 connection으로 자신의 고유아이디나 번호를 보내주게되면 서버소켓에서는 날라오는 데이터를 소켓의 핸들과 같이 저장을 하는거죠..

    그리고 누구,누구에게 귓속말을 보낼경우에는 배열을 검색해서 자신이 보낼 아이디에 해당하는 소켓의 핸들에 해당하는 connection상의 소켓을 조사해서 해당 메시지를 보내는 겁니다.

    물론 더 좋은 방법이 있을 수 있겠지만 어찌보면 초보적이면서 간단한 처리일 수 있습니다.

  • Profile
    초보 2001.07.10 01:55