📄 2win.c
字号:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#define MWINCLUDECOLORS
#include "nxcolors.h"
#include "nano-X.h"
GR_WINDOW_ID clientid,serverid;
GR_GC_ID gc1,gc2;
char cMsgCli[64];
char cMsgSvr[64];
char cClientReq[64];
char cClientAnw[64];
char cServer[64];
GR_SERIALNO count = 0;
static void send_msg(GR_WINDOW_ID clientid, GR_WINDOW_ID serverid,
GR_SERIALNO serial)
{
int size;
sprintf(cClientReq,"Sending Message from %d to %d ", \
clientid, serverid);
sprintf(cMsgCli,"Client: How do U do,server!");
printf("begin sending message\n");
size = sizeof(cMsgCli);
GrSendClientData(clientid, serverid, serial, size, size, cMsgCli);
printf("sending finish\n");
}
static void handle_packet_client(GR_EVENT *event)
{
printf("begin client handle\n");
GR_EVENT_CLIENT_DATA *pkt = (GR_EVENT_CLIENT_DATA *)event;
if(pkt->len <= 64&&!memcmp(pkt->data, "Server: I am fine,thank U",25)) {
printf("clint answer\n");
sprintf(cClientAnw,"Got Anwser from server %d to %d ",\
pkt->rid,pkt->wid);
} else printf(cClientAnw,"Got unknown packet from %d\n", pkt->rid);
printf("clint answer %s\n",cClientAnw);
memset(cMsgCli,0x00,sizeof(cMsgCli));
}
static void handle_packet_server(GR_WINDOW_ID clientid, GR_EVENT *event)
{
int size;
printf("begin server\n");
GR_EVENT_CLIENT_DATA *pkt = (GR_EVENT_CLIENT_DATA *)event;
if(pkt->len <= 64&&!memcmp(pkt->data, "Client: How do U do,server!",26)) {
sprintf(cServer,"Got Message from client window %d ",pkt->rid );
sprintf(cMsgSvr,"Server: I am fine,thank U");
size = sizeof(cMsgSvr);
GrSendClientData(clientid, pkt->rid, pkt->serial, size, size, cMsgSvr);
} else
memset(cServer,0x00,sizeof(cServer));
printf("finish server, %s\n",cMsgSvr);
}
void event_handler (GR_EVENT *event);
int main (void)
{
memset(cMsgCli,0x00,sizeof(cMsgCli));
memset(cMsgSvr,0x00,sizeof(cMsgSvr));
memset(cClientAnw,0x00,sizeof(cClientAnw));
memset(cClientReq,0x00,sizeof(cClientReq));
memset(cServer,0x00,sizeof(cServer));
if (GrOpen() < 0)
{
fprintf (stderr, "GrOpen failed");
exit (1);
}
gc1 = GrNewGC();
GrSetGCUseBackground (gc1, GR_FALSE);
GrSetGCForeground (gc1, RED);
gc2 = GrNewGC();
GrSetGCUseBackground (gc2, GR_FALSE);
GrSetGCForeground (gc2, RED);
clientid = GrNewWindowEx (GR_WM_PROPS_APPFRAME |
GR_WM_PROPS_CAPTION |
GR_WM_PROPS_CLOSEBOX,
"Message sending....",
GR_ROOT_WINDOW_ID,
50, 50, 500, 450, WHITE);
serverid = GrNewWindowEx (GR_WM_PROPS_APPFRAME |
GR_WM_PROPS_CAPTION |
GR_WM_PROPS_CLOSEBOX,
"",
clientid,
50, 100, 300, 200, GR_COLOR_LINEN);
GrSelectEvents (clientid, GR_EVENT_MASK_EXPOSURE |GR_EVENT_MASK_CLIENT_DATA|
GR_EVENT_MASK_CLOSE_REQ );
GrSelectEvents (serverid, GR_EVENT_MASK_EXPOSURE | GR_EVENT_MASK_CLIENT_DATA|\
GR_EVENT_MASK_CLOSE_REQ);
GrMapWindow (clientid);
GrMapWindow (serverid);
send_msg(clientid, serverid, count++);
GrMainLoop (event_handler);
}
void event_handler (GR_EVENT *event)
{
switch (event->type)
{
case GR_EVENT_TYPE_CLIENT_DATA:
handle_packet_server(clientid, event);
handle_packet_client(event);
break;
case GR_EVENT_TYPE_EXPOSURE:
GrText (clientid, gc1, 10, 10,
cClientReq, -1, GR_TFASCII);
GrText (clientid, gc1, 10, 50,
cMsgCli, -1, GR_TFASCII);
GrText (serverid, gc2, 10, 50,
cServer, -1, GR_TFASCII);
GrText (serverid, gc2, 10, 100,
cMsgSvr, -1, GR_TFASCII);
break;
case GR_EVENT_TYPE_CLOSE_REQ:
GrClose();
exit (0);
default:
fprintf(stderr, "Got unknown event %d",event->type);
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -