📄 sockmsg.c
字号:
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <netdb.h>#include <unistd.h>#include "msg.h"#include "global.h"int serverSock;//initial msg.int msgBegin(short port){ struct sockaddr_in svraddr; int on=1; serverSock=socket(AF_INET,SOCK_DGRAM,0); if(serverSock<0) return -1; bzero(&svraddr,sizeof(svraddr)); svraddr.sin_family=AF_INET; svraddr.sin_addr.s_addr=htonl(INADDR_ANY); svraddr.sin_port=htons(port); setsockopt(serverSock,SOL_SOCKET,SO_REUSEADDR,&on,sizeof(on)); bind(serverSock,(struct sockaddr*)&svraddr,sizeof(svraddr)); return serverSock;}void tellManage(char *peerIp,int peerPort){ char msgbuf[sizeof(msgDef)]; msgDef msg; struct sockaddr_in g_toAddr; memset(&msgbuf,0,sizeof(msgDef)); memcpy(msgbuf,&msg,sizeof(msgDef)); msg.msgType=msgTermEvent; bzero(&g_toAddr,sizeof(g_toAddr)); g_toAddr.sin_family=AF_INET; g_toAddr.sin_port=htons(peerPort); g_toAddr.sin_addr.s_addr=inet_addr(peerIp); sendto(serverSock,msgbuf,sizeof(msgDef),0,(struct sockaddr*)&g_toAddr, sizeof(g_toAddr)); }//send message.int msgSend(msgDef msgCnt,char *peerIp,int peerPort){ char msgbuf[sizeof(msgDef)]; struct sockaddr_in g_toAddr; memset(&msgbuf,0,sizeof(msgDef)); memcpy(msgbuf,&msgCnt,sizeof(msgDef)); bzero(&g_toAddr,sizeof(g_toAddr)); g_toAddr.sin_family=AF_INET; g_toAddr.sin_port=htons(peerPort); g_toAddr.sin_addr.s_addr=inet_addr(peerIp); sendto(serverSock,msgbuf,sizeof(msgDef),0,(struct sockaddr*)&g_toAddr, sizeof(g_toAddr)); return 0;}int msgRecv(msgDef* msgCnt){ char msgBuf[sizeof(msgDef)]; int rn; memset(msgBuf,0,sizeof(msgDef)); rn=recvfrom(serverSock,msgBuf,sizeof(msgDef),0,NULL,NULL); memcpy(msgCnt,msgBuf,sizeof(msgDef)); msgCnt->msgBuf[100]=0; return 0;}void msgEnd(){ close(serverSock);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -