ipcserver.c

来自「Microwindows genesis was with the NanoG」· C语言 代码 · 共 67 行

C
67
字号
/* * Nano-X IPC server demonstration- start one copy of ipccserver first, then * run as many ipcclients as you want. * * Copyright (c) 2002 Alex Holden <alex@alexholden.net>. */#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>#include "nano-X.h"static void handle_packet(GR_WINDOW_ID wid, GR_EVENT *event){	GR_EVENT_CLIENT_DATA *pkt = (GR_EVENT_CLIENT_DATA *)event;	if(pkt->len == 4 && !memcmp(pkt->data, "ping", 4)) {		printf("Got ping packet from window %d with serial %lu, "				"sending pong reply\n", pkt->rid, pkt->serial);		GrSendClientData(wid, pkt->rid, pkt->serial,			4, 4, "pong");	} else printf("Got unknown packet from window %d\n", pkt->rid);}int main(int argc, char *argv[]){	GR_EVENT event;	GR_WINDOW_ID wid;	if(GrOpen() < 0) {		fprintf(stderr, "Couldn't connect to Nano-X server\n");		return 1;	}	wid = GrNewWindow(GR_ROOT_WINDOW_ID, 0, 0, 1, 1, 0, 0, 0);	if(!wid) {		fprintf(stderr, "Couldn't get a window\n");		GrClose();		return 1;	}	GrSelectEvents(wid, GR_EVENT_MASK_CLIENT_DATA);	GrChangeProperty(GR_ROOT_WINDOW_ID, "demo_ipc_server", (GR_PROP *)&wid,			sizeof(wid));	printf("Registered server window %d\n", wid);	while(1) {		GrGetNextEvent(&event);		switch(event.type) {			case GR_EVENT_TYPE_CLIENT_DATA:				handle_packet(wid, &event);				break;			default:				fprintf(stderr, "Got unknown event %d\n",						event.type);				break;		}	}	GrClose();	return 0;}

⌨️ 快捷键说明

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