prg6_7client.c

来自「配套光盘网络编程进程间的通信,网络编程进程间的通信是一本很经典的好书」· C语言 代码 · 共 50 行

C
50
字号
#include <sys/msg.h>
#include <stdlib.h>
#include <sys/types.h>
#include "svmsg.h"
#include <errno.h>
#include <unistd.h>
#include <stdio.h>

int  client(int,int);
int main(int argc,char **argv)
{
	int readid,writeid;
	readid = msgget(MQ_KEY1,0);
	writeid = msgget(MQ_KEY2,0);
	client(readid,writeid);
	exit(0);
}

size_t mesg_send(int id,mymesg *mptr)
{
	return (msgsnd(id,&(mptr->mesg_type),mptr->mesg_len,0));
}

size_t mesg_recv(int id,mymesg *mptr)
{
	size_t n;
	n = msgrcv(id,&(mptr->mesg_type),MAXMESGDATA,mptr->mesg_type,0);
	mptr->mesg_len = n;
	return (n);
}

int client(int readfd,int writefd)
{
	size_t  len;
	size_t  n;
	mymesg  mesg;
	fgets(mesg.mesg_data,MAXMESGDATA,stdin);
	len = strlen(mesg.mesg_data);
	if (mesg.mesg_data[len-1] == '\n')
	    len--;
	mesg.mesg_len =  len;
	mesg.mesg_type = 1;
	
	mesg_send(writefd,&mesg);
	while (( n = mesg_revc(readfd,&mesg))> 0)
	  write(STDOUT_FILENO,mesg.mesg_data,n);
}
		
			

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?