Server (받는쪽)

#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <sys/stat.h>

struct msgbuf {
long msgtype;
char buf[512];
};

int main(int argc, char **argv)
{
key_t key_id;
int i;
struct msgbuf mybuf;

key_id = msgget((key_t)1234, IPC_CREAT|0666);
if(key_id == -1) {
perror("msgget error : ");
exit(0);
}

while(1) {
if(msgrcv(key_id, (void *)&mybuf, sizeof(struct msgbuf), 1, 0) == -1) {
perror("quit : ");
exit(0);
}
printf("Msg Recv : [%d] [%s] \n", mybuf.msgtype, mybuf.buf);
}

return 0;
}


Client (보내는쪽)

#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <sys/stat.h>
#include <fcntl.h>

struct msgbuf {
long msgtype;
char buf[512];
};

int main(int argc, char **argv)
{
key_t key_id;
int i, n;
struct msgbuf mybuf;
int fd_r;

int packet_size;

int total_size = 100000000;
int loop_size;

key_id = msgget((key_t)1234, IPC_CREAT|0666);

if (key_id == -1) {
perror("msgget error : ");
exit(0);
}

mybuf.msgtype = 1;

memset(mybuf.buf, 0x00, sizeof(mybuf.buf));


printf("Queue에 전송할 메시지를 입력하세요. -> ");
gets(&mybuf.buf);

if (strlen(mybuf.buf) > 0) {
if (msgsnd(key_id, (void*)&mybuf, sizeof(struct msgbuf), 0) == -1) {
perror("msgsnd error : ");
exit(0);
}
printf("Queue에 메시지 전송 성공.\n");
} else {
printf("Queue에 메시지 전송이 실패 했습니다.\n");
printf(" 입력한 문장을 확인해 주세요. \n");
exit(0);
}

return 0;
}
프로세서간의 통신 방법중 하나인 IPC[Message Queue]에 대한 간단한 샘플이다.

위에 프로그램은 Server 측에서 Key_id (1234) 에 Queue를 대기 하고 있다가
Client 쪽에서 KeyIn으로 받은 데이타를 Queue로 보내준다.

'아무거나' 카테고리의 다른 글

현재 폴더의 위치에서 명령 프롬프트 열기  (0) 2006.05.28
델파이 7.0 에서 QuickRep 설치 하기  (1) 2006.05.02
Eclipse 설치후 사용..  (0) 2006.04.25
공개 뉴스 그룹  (1) 2006.04.14
윈도우 정품 인증팁 #2  (2) 2006.04.14

+ Recent posts