C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[4331] Re:[질문]유동IP로 접속되는 클라이언트와 통신하기
박지훈.임프 [cbuilder] 4287 읽음    2000-10-24 00:00
경호 님이 쓰신 글 :
: 안녕하세요 ?
:
: 이번에 좀 골치아픈 문제가 생겨서 도움을 구하고자 합니다.
:
: 제가 알고 싶은것은 여러 클라이언트가 하나의 서버에 유동 IP를 가지고 접속시(물론 접속할때는
: 프로그램에서 IP등을 알수 있지요) 서버는 클라이언트 별로 특정 포트를 생성하자나요...
:
: 그런데 서버에서 clientread시에는 소켓을 읽고 있으니까 바로 그 소켓으로 Send하면 되는데
: 임의로 연결된 소겟에게(다 읽고 난후에 디비에서 해당 장비를 찿아 해당장비만의 데이터를
: 개별적으로 보낼때 즉 연결된 소켓중 내가 원하는 장비가 연결된 소켓을 찿아서)  데이터를
: 보내는 부분에서 걸려 있습니다.
:
: 클라이언트가 동시에 400 ~ 2000대 정도 붙기 때문에 Clientread부분에서 파싱해서 원하는
: 데이터를 보내게 되면 너무 부하가 많이 걸려서요...
:
: 일단 읽는 부분과 보내는 부분을 분리해서 작업을 해야 하는대요....
: 휴 공통 데이터를 브로드 캐스팅하는 것이 아니라 좀 헤메고 있습니다.
:
: 연결된 소켓을 알아내서 그 소켓중 특정한 하나의 소켓에 메세지를 보내는 방법을
: 좀 알켜 주세요...
:



임펠리테리입니다.

정확한 질문의 요지를 잘 모르겠습니다만.. 일단 데이터를 전송할 클라이언트의 IP는 알아야겠지요? 혹 모른다면 클라이언트쪽에서 보낸 정보를 바탕으로 알아내야겠지요. 예를 들면, 접속한 직후에 클라이언트가 '난 이런넘이다'라고.. 아이디 정도의 정보는 보내줘야겠죠. 모든 접속 클라이언트마다 ID를 부여하든지 해서요.

전송해야 할 클라이언트의 IP주소를 알아냈다면 문제는 간단하죠. 서버소켓->Socket->Connections[i]->LocalAddress를 비교해서 데이터를 전송해야 할 클라이언트의 소켓 핸들을 찾아낸 다음, 그리로 데이터를 전송하면 됩니다.

그럼 참고하시길...

+ -

관련 글 리스트
4327 [질문]유동IP로 접속되는 클라이언트와 통신하기 경호 4092 2000/10/24
4331     Re:[질문]유동IP로 접속되는 클라이언트와 통신하기 박지훈.임프 4287 2000/10/24
4353         Re:Re:[질문]유동IP로 접속되는 클라이언트와 통신하기 경호 3390 2000/10/26
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.