#define GM_REGREQ 0x00
#define GM_REGREP 0x01
#define GM_UNREGREQ 0x02
#define GM_UNREGREP 0x03
#define GM_ECHOREQ 0x04
#define GM_ECHOREP 0x05
#define GM_DATA 0x06
#define GM_UDATA 0x07
#define GM_UDATAREP 0x08typedef struct {
uint8_t gm_ver; //typedef unsigned char uint8_t;
uint8_t gm_type;
uint16_t gm_len; //typedef unsigned short uint16_t;
uint16_t gm_res;
uint16_t gm_checksum;
uint8_t gm_pdu[1];
} gm_packet;
........
udpfd = socket(AF_INET, SOCK_DGRAM, 0); //1、创建 memset(&servaddr, 0, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(SERV_PORT); bind(udpfd, (SA *) &servaddr, sizeof(servaddr)); //2、绑定
......
recvfrom(udpfd, mesg, MAXLINE, 0, (SA *) &cliaddr, &len);
svr_recv(mesg, n, udpfd, (SA *) &cliaddr, len);
......void svr_recv(char *data, int len, int sockfd, SA *clntaddr, int clnt_len)
{
gm_packet *pkt;
pkt = (gm_packet*)data;
switch(pkt->gm_type){
case GM_REGREQ:
....
break;
case GM_UNREGREQ:
....
break;
case GM_ECHOREP:
....
break;
case GM_UDATA:
....
break;
case GM_UDATAREP:
....
break;
default: /* Error */
sendto(sockfd, "yes", 3, 0, clntaddr, clnt_len);
break;
}
}我的问题是:
#define GM_REGREQ 0x00
#define GM_REGREP 0x01
#define GM_UNREGREQ 0x02
#define GM_UNREGREP 0x03
#define GM_ECHOREQ 0x04
#define GM_ECHOREP 0x05
#define GM_DATA 0x06
#define GM_UDATA 0x07
#define GM_UDATAREP 0x08
他们是在此处是什么意思? 为什么取0x00...0x08? 有什么约定?
#define GM_REGREP 0x01
#define GM_UNREGREQ 0x02
#define GM_UNREGREP 0x03
#define GM_ECHOREQ 0x04
#define GM_ECHOREP 0x05
#define GM_DATA 0x06
#define GM_UDATA 0x07
#define GM_UDATAREP 0x08typedef struct {
uint8_t gm_ver; //typedef unsigned char uint8_t;
uint8_t gm_type;
uint16_t gm_len; //typedef unsigned short uint16_t;
uint16_t gm_res;
uint16_t gm_checksum;
uint8_t gm_pdu[1];
} gm_packet;
........
udpfd = socket(AF_INET, SOCK_DGRAM, 0); //1、创建 memset(&servaddr, 0, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(SERV_PORT); bind(udpfd, (SA *) &servaddr, sizeof(servaddr)); //2、绑定
......
recvfrom(udpfd, mesg, MAXLINE, 0, (SA *) &cliaddr, &len);
svr_recv(mesg, n, udpfd, (SA *) &cliaddr, len);
......void svr_recv(char *data, int len, int sockfd, SA *clntaddr, int clnt_len)
{
gm_packet *pkt;
pkt = (gm_packet*)data;
switch(pkt->gm_type){
case GM_REGREQ:
....
break;
case GM_UNREGREQ:
....
break;
case GM_ECHOREP:
....
break;
case GM_UDATA:
....
break;
case GM_UDATAREP:
....
break;
default: /* Error */
sendto(sockfd, "yes", 3, 0, clntaddr, clnt_len);
break;
}
}我的问题是:
#define GM_REGREQ 0x00
#define GM_REGREP 0x01
#define GM_UNREGREQ 0x02
#define GM_UNREGREP 0x03
#define GM_ECHOREQ 0x04
#define GM_ECHOREP 0x05
#define GM_DATA 0x06
#define GM_UDATA 0x07
#define GM_UDATAREP 0x08
他们是在此处是什么意思? 为什么取0x00...0x08? 有什么约定?
能具体点吗?
为什么取0x00...0x08?
我能
#define GM_REGREQ 0x10
#define GM_REGREP 0x11
#define GM_UNREGREQ 0x12
#define GM_UNREGREP 0x13
#define GM_ECHOREQ 0x14
#define GM_ECHOREP 0x15
#define GM_DATA 0x16
#define GM_UDATA 0x17
#define GM_UDATAREP 0x18