|
경호 님이 쓰신 글 :
: 안녕하세요 ?
:
: 이번에 좀 골치아픈 문제가 생겨서 도움을 구하고자 합니다.
:
: 제가 알고 싶은것은 여러 클라이언트가 하나의 서버에 유동 IP를 가지고 접속시(물론 접속할때는
: 프로그램에서 IP등을 알수 있지요) 서버는 클라이언트 별로 특정 포트를 생성하자나요...
:
: 그런데 서버에서 clientread시에는 소켓을 읽고 있으니까 바로 그 소켓으로 Send하면 되는데
: 임의로 연결된 소겟에게(다 읽고 난후에 디비에서 해당 장비를 찿아 해당장비만의 데이터를
: 개별적으로 보낼때 즉 연결된 소켓중 내가 원하는 장비가 연결된 소켓을 찿아서) 데이터를
: 보내는 부분에서 걸려 있습니다.
:
: 클라이언트가 동시에 400 ~ 2000대 정도 붙기 때문에 Clientread부분에서 파싱해서 원하는
: 데이터를 보내게 되면 너무 부하가 많이 걸려서요...
:
: 일단 읽는 부분과 보내는 부분을 분리해서 작업을 해야 하는대요....
: 휴 공통 데이터를 브로드 캐스팅하는 것이 아니라 좀 헤메고 있습니다.
:
: 연결된 소켓을 알아내서 그 소켓중 특정한 하나의 소켓에 메세지를 보내는 방법을
: 좀 알켜 주세요...
:
임펠리테리입니다.
정확한 질문의 요지를 잘 모르겠습니다만.. 일단 데이터를 전송할 클라이언트의 IP는 알아야겠지요? 혹 모른다면 클라이언트쪽에서 보낸 정보를 바탕으로 알아내야겠지요. 예를 들면, 접속한 직후에 클라이언트가 '난 이런넘이다'라고.. 아이디 정도의 정보는 보내줘야겠죠. 모든 접속 클라이언트마다 ID를 부여하든지 해서요.
전송해야 할 클라이언트의 IP주소를 알아냈다면 문제는 간단하죠. 서버소켓->Socket->Connections[i]->LocalAddress를 비교해서 데이터를 전송해야 할 클라이언트의 소켓 핸들을 찾아낸 다음, 그리로 데이터를 전송하면 됩니다.
그럼 참고하시길...
|