One Process per One Client이용시 프로세스간 통신에 대해서
글쓴이: ungqum77 / 작성시간: 화, 2003/12/02 - 9:05오후
하나의 클라이언트가 접속하면, 새로운 프로세스를 생성해서, 다자간 채팅 서버를 구성하고 있습니다(리눅스 처음배움...)
그런데... 배틀넷(스타)에서의 채널 처럼 관리 하려고 하는데요....
서로간의 통신이 안되는 군요...
파이프를 이용해 보려구 하는데요, 자식 과 부모 한개 사이의 활용만 나와 있는것 같구요...
기본적인 윈속의 개념을 이용해서 하려니까, 한계점에 다다릅니다.
저는 하나의 자식 프로세스가 계속 while을 하면서 read하는 형태로 코드를 짜 나갔습니다.
하나의 클라이언트에서 들어온 메시지(채팅글이되겠습니다.) 를 전체의 접속 클라이언트에게 동시에 보내려고 합니다.
해결 방법을 좀 구체적으로 적어 주세요 ^^
잘 부탁드립니다.
Forums:
음... 대답은 아니지만, 제 생각에는 One thread per one
음... 대답은 아니지만, 제 생각에는 One thread per one client 로 구현하는건
어떨까 하는데요. 대화방 하나에 프로세스 하나, 클라이언트하나에 스레드 하나...
이렇게 하는게 좀 쉬워질 수 있지 않을까요? 기본적으로 프로세스간 통신보다는
스레드간 통신히 더 수월하니(싱크문제는 빼고요..; 대화가 오가는 대화방 안의
클라이언트들로부터 듣고 뿌리는 것은 스레드를 이용해서 구현하는게 괜찮지
않을까 합니다...
- 원하시는 답변이 아니라 죄송합니다~
--
http://www.deisys.net
메세지 큐는 어떨까요?
메세지 큐는 어떨까요?
There is no spoon. Neo from the Matrix 1999.
한유저에 하나의 프로세스.. 채팅..이거 제가 아시는 분이 예전에 하
한유저에 하나의 프로세스.. 채팅..
이거 제가 아시는 분이 예전에 하이텔 같은 텔넷 기반에서 채팅서버 만들어야할 상황일때 이야기인데 이거랑 비슷항 상황인가 보네요.
이거 공유메모리를 사용하셔서 상당히 빠른 포퍼먼스를 얻으셨다고 하시는 것 같던군요.
Re: One Process per One Client이용시 프로세스간 통신에 대해
전에 메시지큐로 했던 기억이나네요. 메시지큐를 보시면 아마도 해결책이
나올겁니다. 그리고 배틀넷 같은 채팅서버는 프로세스당 하나의 클라이언트
보다는 하나의 프로세스가 전체 유저를 관리하는것이 더 효율적이구요.
socket, shared memory, pipe, message que
socket, shared memory, pipe, message queue등을 사용해서
가능합니다.
하지만 대용량 네트웍 서버를 만들려면 fork로 프로세스를 만드는거는
엄청 한계가 있습니다. (system resource, context switching time 등)
thread pooling 하시죠. 이 계시판에 관련된 질문과 답이 많이 있던거 같던데요.
Life rushes on, we are distracted
댓글 달기