⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 transform.c

📁 一个很好的例子-基于Linux的消息传输系统
💻 C
📖 第 1 页 / 共 2 页
字号:

		(*(DataMsgContent*)(msg->content)).length=*(int *)point;
		point=point+4;
                 strcpy((*(DataMsgContent*)(msg->content)).data,point); 
}

Message* byteToStruct(Buffer *buffer)
{
	int i;
	char *point;
	Message *msg;
	msg=(Message*)malloc(sizeof(Message));
	point=buffer->bytes;
	msg->type=*(int *)point;
	point=point+4;
	msg->serial=*(int *)point;
	point=point+4;
	for(i=0;point[i]!='\0';i++)
		msg->src[i]=point[i];
	msg->src[i]='\0';
	point=point+32;

	for(i=0;point[i]!='\0';i++)
		msg->srcIp[i]=point[i];
    msg->srcIp[i]='\0';
	point=point+32;

    msg->srcPort=*(int *)point;
	point=point+4;
	
	for(i=0;point[i]!='\0';i++)
		msg->des[i]=point[i];
	msg->des[i]='\0';
	point=point+32;

	msg->priority=*(int *)point;
	point=point+4;

	msg->length=*(int *)point;
	point=point+4;
	switch(msg->type)
	{
	case 1 :
	case 6 :
	case 7 :
	case 12 :
	case 17 :
	case 15 : 
		byteTostr1(msg,point);
		//printf("%d,%d,%s,%s,%d,%s,%d,%d,%d,%d,%d,%d,%d,%s,%d,%s,%d,%d,%d,%s\n",msg->type,msg->serial,msg->src,msg->srcIp,msg->srcPort,msg->des,msg->priority,msg->length,(*(DataMsgContent*)(msg->content)).type,(*(DataMsgContent*)(msg->content)).sendRange,(*(DataMsgContent*)(msg->content)).syn,(*(DataMsgContent*)(msg->content)).compulsory,(*(DataMsgContent*)(msg->content)).state,(*(DataMsgContent*)(msg->content)).src,(*(DataMsgContent*)(msg->content)).srcApp,(*(DataMsgContent*)(msg->content)).des,(*(DataMsgContent*)(msg->content)).desApp,(*(DataMsgContent*)(msg->content)).priority,(*(DataMsgContent*)(msg->content)).length,(*(DataMsgContent*)(msg->content)).data);
		break;
	case 11 :
		byteTostr2(msg,point);
		//printf("%d,%d,%s,%s,%d,%s,%d,%d,%d,%s\n",msg->type,msg->serial,msg->src,msg->srcIp,msg->srcPort,msg->des,msg->priority,msg->length,(*(DmtRegRequest*)(msg->content)).index,(*(DmtRegRequest*)(msg->content)).dmt);
		break;
	case 10 :
		byteTostr3(msg,point);
		//printf("%d,%d,%s,%s,%d,%s,%d,%d,%s\n",msg->type,msg->serial,msg->src,msg->srcIp,msg->srcPort,msg->des,msg->priority,msg->length,(*(MapRequestContent*)(msg->content)).target);
		break;
	case 4 :
		byteTostr4(msg,point);
		//printf("%d,%d,%s,%s,%d,%s,%d,%d,%d,%d,%s,%d,%s\n",msg->type,msg->serial,msg->src,msg->srcIp,msg->srcPort,msg->des,msg->priority,msg->length,(*(MapRespondContent*)(msg->content)).result,(*(MapRespondContent*)(msg->content)).state0,(*(MapRespondContent*)(msg->content)).ip0,(*(MapRespondContent*)(msg->content)).state1,(*(MapRespondContent*)(msg->content)).ip1);
		break;
	case 9 :
	case 16 :
		byteTostr5(msg,point);
		//printf("%d,%d,%s,%s,%d,%s,%d,%d,%s,%d,%s,%d\n",msg->type,msg->serial,msg->src,msg->srcIp,msg->srcPort,msg->des,msg->priority,msg->length,(*(AppRegContent*)(msg->content)).appName,(*(AppRegContent*)(msg->content)).appId,(*(AppRegContent*)(msg->content)).Group,(*(AppRegContent*)(msg->content)).port);
		break;
	case 3 :
	case 5 :
	case 13 :
	case 14 :
		byteTostr6(msg,point);
		//printf("%d,%d,%s,%s,%d,%s,%d,%d,%d,%s\n",msg->type,msg->serial,msg->src,msg->srcIp,msg->srcPort,msg->des,msg->priority,msg->length,(*(CommonRespondContent*)(msg->content)).result,(*(CommonRespondContent*)(msg->content)).description);
		break;
	case 2 :
	case 8 :
		byteTostr7(msg,point);
		//printf("%d,%d,%s,%s,%d,%s,%d,%d,%d,%d\n",msg->type,msg->serial,msg->src,msg->srcIp,msg->srcPort,msg->des,msg->priority,msg->length,(*(MonitorContent*)(msg->content)).count,(*(MonitorContent*)(msg->content)).state);
		break;
	}
//	printf("\n%d,%d,%s,%s,%d,%d,%d,%d,%s",msg->type,msg->serial,msg->src,msg->des,msg->priority,msg->length,(*(DataMsgContent*)(msg->content)).type,(*(DataMsgContent*)(msg->content)).sendRange,(*(DataMsgContent*)(msg->content)).data);
    return msg;
}

void str7ToByte(Message *message,char *point)
{
    (*(int*)point)=(*(MonitorContent*)(message->content)).count;
	point=point+4;

	(*(int*)point)=(*(MonitorContent*)(message->content)).state;
	point=point+4;
}

void str6ToByte(Message *message,char *point)
{
	int i;
	(*(int*)point)=(*(CommonRespondContent*)(message->content)).result;
	point=point+4;
	for(i=0;i<32;i++)
	{
		(*point)=(*(CommonRespondContent*)(message->content)).description[i];
		point=point+1;
	}
//	(*point)='\0';
}

void str5ToByte(Message *message,char *point)
{
	int i;
	for(i=0;i<32;i++)
	{
		(*point)=(*(AppRegContent*)(message->content)).appName[i];
		point=point+1;
	}
	
	(*(int*)point)=(*(AppRegContent*)(message->content)).appId;
	point=point+4;
	
	for(i=0;i<32;i++)
	{
		(*point)=(*(AppRegContent*)(message->content)).Group[i];
		point=point+1;
	}
	
	(*(int*)point)=(*(AppRegContent*)(message->content)).port;
	point=point+4;
}

void str4ToByte(Message *message,char *point)
{
	int i;
	(*(int*)point)=(*(MapRespondContent*)(message->content)).result;
	point=point+4;
	(*(int*)point)=(*(MapRespondContent*)(message->content)).state0;
	point=point+4;

    for(i=0;i<32;i++)
	{
		(*point)=(*(MapRespondContent*)(message->content)).ip0[i];
		point=point+1;
	}

	(*(int*)point)=(*(MapRespondContent*)(message->content)).state1;
	point=point+4;

	for(i=0;i<32;i++)
	{
		(*point)=(*(MapRespondContent*)(message->content)).ip1[i];
		point=point+1;
	}
}

void str3ToByte(Message *message,char *point)
{
	int i;
	for(i=0;i<32;i++)
	{
		(*point)=(*(MapRequestContent*)(message->content)).target[i];
		point=point+1;
	}
}

void str2ToByte(Message *message,char *point)
{
	int i;
        *(int *)point=(*(DmtRegRequest*)(message->content)).index;
        point=point+4;
	for(i=0;i<32;i++)
	{
		(*point)=(*(DmtRegRequest*)(message->content)).dmt[i];
		point=point+1;
	}
}

void str1ToByte(Message *message,char *point)
{
	int i;
	(*(int*)point)=(*(DataMsgContent*)(message->content)).type;
			point=point+4;
			(*(int*)point)=(*(DataMsgContent*)(message->content)).sendRange;
			point=point+4;
			(*(int*)point)=(*(DataMsgContent*)(message->content)).syn;
			point=point+4;
			(*(int*)point)=(*(DataMsgContent*)(message->content)).compulsory;
			point=point+4;
			(*(int*)point)=(*(DataMsgContent*)(message->content)).state;
			point=point+4;
			for(i=0;i<32;i++)
			{
				(*point)=(*(DataMsgContent*)(message->content)).src[i];
				point=point+1;
			}
			
			(*(int*)point)=(*(DataMsgContent*)(message->content)).srcApp;
			point=point+4;
			
			for(i=0;i<32;i++)
			{
				(*point)=(*(DataMsgContent*)(message->content)).des[i];
				point=point+1;
			}
			
			(*(int*)point)=(*(DataMsgContent*)(message->content)).desApp;
			point=point+4;
			
			(*(int*)point)=(*(DataMsgContent*)(message->content)).priority;
			point=point+4;
			(*(int*)point)=(*(DataMsgContent*)(message->content)).length;
			point=point+4;
                        printf(":::::::::::::contnet length:%d::::::::\n\n",(*(DataMsgContent*)(message->content)).length);
			for(i=0;i<(*(DataMsgContent*)(message->content)).length;i++)
			{
				(*point)=(*(DataMsgContent*)(message->content)).data[i];
				point=point+1;
			}
			(*point)='\0';
}		

void strToByte(Message *message,Buffer *buffer)
{
	char *byte=buffer->bytes;
	char *point=buffer->bytes;
	int i=0;
	(*(int*)point)=message->type;
	point=point+4;
	(*(int*)point)=message->serial;
	point=point+4;
	for(i=0;i<32;i++)
	{
		(*point)=message->src[i];
		point=point+1;
	}

	for(i=0;i<32;i++)
	{
		(*point)=message->srcIp[i];
		point=point+1;
	}

    (*(int*)point)=message->srcPort;
	point=point+4;

	for(i=0;i<32;i++)
	{
		(*point)=message->des[i];
		point=point+1;
	}
	(*(int*)point)=message->priority;
	point=point+4;
    (*(int*)point)=message->length;
	point=point+4;
		switch(message->type)
		{
		case 11 :
			str2ToByte(message,point);
			buffer->length=152;
			//printf("%d,%d,%s,%s,%d,%s,%d,%d,%d,%s\n",*(int*)byte,*(int*)(byte+4),byte+8,byte+40,*(int*)(byte+72),byte+76,*(int*)(byte+108),*(int*)(byte+112),*(int *)(byte+116),byte+120);
			break;
		case 1 :
		case 6 :
		case 7 :
		case 12 :
		case 15 :
		case 17 :
			str1ToByte(message,point);
			buffer->length=216+(*(DataMsgContent*)(message->content)).length;
			//printf("%d,%d,%s,%s,%d,%s,%d,%d,%d,%d,%d,%d,%d,%s,%d,%s,%d,%d,%d,%s\n",*(int*)byte,*(int*)(byte+4),byte+8,byte+40,*(int*)(byte+72),byte+76,*(int*)(byte+108),*(int*)(byte+112),*(int*)(byte+116),*(int*)(byte+120),*(int*)(byte+124),*(int*)(byte+128),*(int*)(byte+132),byte+136,*(int*)(byte+168),byte+172,*(int*)(byte+204),*(int*)(byte+208),*(int*)(byte+212),byte+216);
			break;
		case 10 :
			str3ToByte(message,point);
			buffer->length=148;
			//printf("%d,%d,%s,%s,%d,%s,%d,%d,%s\n",*(int*)byte,*(int*)(byte+4),byte+8,byte+40,*(int*)(byte+72),byte+76,*(int*)(byte+108),*(int*)(byte+112),byte+116);
			break;
		case 4 :
			str4ToByte(message,point);
			buffer->length=192;
			//printf("%d,%d,%s,%s,%d,%s,%d,%d,%d,%d,%s,%d,%s\n",*(int*)byte,*(int*)(byte+4),byte+8,byte+40,*(int*)(byte+72),byte+76,*(int*)(byte+108),*(int*)(byte+112),*(int*)(byte+116),*(int*)(byte+120),(byte+124),*(int*)(byte+156),(byte+160));
            break;
		case 9 :
		case 16 :
			str5ToByte(message,point);
			buffer->length=188;
			//printf("%d,%d,%s,%s,%d,%s,%d,%d,%s,%d,%s,%d\n",*(int*)byte,*(int*)(byte+4),byte+8,byte+40,*(int*)(byte+72),byte+76,*(int*)(byte+108),*(int*)(byte+112),(byte+116),*(int*)(byte+148),(byte+152),*(int*)(byte+184));
            break;
		case 3 :
		case 5 :
		case 13 :
		case 14 :
			str6ToByte(message,point);
			buffer->length=152;
			//printf("%d,%d,%s,%s,%d,%s,%d,%d,%d,%s\n",*(int*)byte,*(int*)(byte+4),byte+8,byte+40,*(int*)(byte+72),byte+76,*(int*)(byte+108),*(int*)(byte+112),*(int*)(byte+116),byte+120);
            break;
		case 2 :
		case 8 :
			str7ToByte(message,point);
			buffer->length=124;
			//printf("%d,%d,%s,%s,%d,%s,%d,%d,%d,%d\n",*(int*)byte,*(int*)(byte+4),byte+8,byte+40,*(int*)(byte+72),byte+76,*(int*)(byte+108),*(int*)(byte+112),*(int*)(byte+116),*(int*)(byte+120));
            break;
		}
}

Buffer * createBuffer()
{
	Buffer * buffer;
	char *byte;
	buffer=(Buffer*)malloc(sizeof(Buffer));
	byte=(char *)malloc(sizeof(char)*1000);
	buffer->bytes=byte;
	buffer->length = 0;
	return buffer;
}
void destroyBuffer(Buffer * buffer)
{
       free(buffer->bytes);
       free(buffer);
}
CI * createCI(int a)
{
  CI * myci = (struct CI *)malloc(sizeof(struct CI));
  myci->listenPort = a;
  myci->sendBuffer = ( LinkedList *)malloc(sizeof(LinkedList));
  myci->receiveBuffer =( LinkedList *)malloc(sizeof( LinkedList));
  myci->sendBuffer->head = NULL;
  myci->receiveBuffer->head =NULL;
  myci->sendBuffer->length = 0;
  myci->sendBuffer->destroyElement = NULL;
  return myci;
}

⌨️ 快捷键说明

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