我简单写了以下几句,只是说明问题,未经运行验证,仅供参考.
有些东西跟你的具体实现有关系,看明白了就应该可以自己写出来了.
#include <sys/types.h>
#include <unistd.h>
#include <sys/ipc.h>
#include <sys/msg.h>
UNIQUE_KEY = 12345678;//这个数字是你的目标消息队列的关键字
struct msgbuf{
long mtype;
char mtext[100];
};//消息格式
void main(){
struct msgbuf mq_buf;
//以下几个是用于定义套接字的
struct sockaddr_in sin;
struct sockaddr_in pin;
int sock_descriptor;
int temp_sock_descriptor;
int address_size;
int id = msgget(UNIQUE_KEY,0666);//得到目标消息队列的标识
mq_buf.mtype = 123;
//建立服务器端倾听套接字
sock_descriptor = socket(AF_INET,SOCK_STREAM,0);
bzero(&sin,sizeof(sin));
sin.sin_family = AF_INET;
sin.sin_addr.s_addr = INADDR_ANY;
sin.sin_port = htons(8000);
bind(sock_descriptor,(struct sockaddr *)&sin,sizeof(sin));
listen(sock_descriptor,10);
//无限循环接收来自客户端的消息
while(1){
temp_sock_descriptor = accept(sock_descriptor,(struct sockaddr *)&pin,&address_size);
recv(temp_sock_descriptor,mq_buf.mtext,16384,0);
//收到消息之后发送到消息队列中
msgsnd(id,(struct msgbuf *)&mq_buf,100,123,IPC_NOWAIT);
close(temp_sock_descriptor);
}
}