통신프로그램을 만들고 있습니다.
제가 초보라 너무 개념이 없어서 이곳에 도움을 요청 드립니다.
6개의 클라이언트가 하나의 서버에 물리는데 문제는 이 서버가
fork() 로 복제가 되다보니 IPC 중 메세지큐를 이용하려고 합니다.
그런데 생각만큼 잘 되지를 않군요. 서버와 맞물려있는 클라이언트들은
서버에 정보를 보내고 서버에서는 이 정보를 바로 메세지큐에 담습니다.
즉 A 라는 클라이언트에서 B 라는 클라이언트로 정보를 보낼때
A에서 보낸정보를 서버는 B가 가지고 갈수 있도록 메세지를 변형해서
메세지 큐에 담습니다.
여기까지는 잘 되는데 문제가 있는게 B 에 물려있는 서버는 메세지큐에서
자신의 메세지를 꺼내서 연결되어 있는 클라이언트에 보내야하는데
보내지지가 않네요.
Select 를 이용하였고 클라이언트 소켓에 입력 가능할때 데이터를 보내도록
했었습니다. 그랬더니 클라이언트에 어떤 정보가 send 되어야만 메세지를
보내는것입니다. 그래서 클라이언트 소켓의 쓰기가능할때 보내도록했는데
그것은 되지도 않네요.
그냥 무한 루프안에 메세지를 꺼내서 send 시켜도 받지를 못합니다.
오직 select 의 read 될때 ... 거기서만 가능한데 잘못되어도 많이 잘못
된것 같네요.
이렇게 메세지큐를 이용하여 프로세스간에 통신을 할때 꺼내온 메세지를
클라이언트에 보내려면 어떻게 해야 합니까?? 반드시 클라이언트에서
어떤 데이터가 와야만 보낼수 있는것은 아니지요?
부족하고 미련한 저에게 힘을 주세요..
댓글 달기