#include <Winsock2.h>
#include <stdio.h>
#include <cstdlib>
#include <iostream>
#pragma comment(lib,"WS2_32.lib")
/*******************************************************
// 说明: 解析字符串
// 参数: char* psrv[]:要解析的字符串
// 返回值: int 0:成功
// 输入字符串实例:"{\\\"actionNum\\\":\\\"101,102,103\\\",\\\"pilotId\\\":\\\"2A3BFE45KLGF2345\\\",\\\"testPoints\\\":\\\"1.1,3.4\\\"}"
// 解析出的数据实例:
**********************************************************/
int fstrstr(char* psrv[])
{
char* da= (char*) malloc(strlen(psrv[0]));
strcpy(da,psrv[0]);
char* separate = "\\\",\\\"";
char* separate1 = "\\\":\\\"";
char* temp = da;
//根据分隔符 "\\\",\\\"",解析出第一列:actionNum
int len =strstr(temp,separate) - temp;
if(len>0)
{
char* actionNum = (char*) malloc(len);
memcpy(actionNum,temp,len);
actionNum[len]='\0';
// 分隔符"\\\":\\\""找到值的起始地址,输出到终端,(分隔符"\\\":\\\""找到值的起始地址+分割符的长度=值得真实起始地址)
std::cout<<"actionNum: "<<strstr(actionNum,"\\\":\\\"")+ strlen(separate1)<<std::endl;
}
// 移动temp指向地址(指向下一列起始地址)pilotId
temp =strstr(temp,separate) + strlen(separate);
len =strstr(temp,separate) - temp;
if(len>0)
{
char* pilotId = (char*) malloc(len);
memcpy(pilotId,temp,len);
pilotId[len]='\0';
std::cout<<"pilotId: "<<strstr(pilotId,"\\\":\\\"")+ strlen(separate1)<<std::endl;
}
// 移动temp指向地址(指向下一列起始地址)testPoints
temp =strstr(temp,separate) + strlen(separate);
len =strstr(temp,separate) - temp;
//如果长度大于零说明不是最后一列
if(len>0)
{
char* testPoints = (char*) malloc(len);
memcpy(testPoints,temp,len);
testPoints[len]='\0';
std::cout<<"testPoints: "<<strstr(testPoints,"\\\":\\\"")+ strlen(separate1)<<std::endl;
}else
{
len =strstr(temp,"\\\"}") - temp;
char* testPoints = (char*) malloc(len);
memcpy(testPoints,temp,len);
testPoints[len]='\0';
std::cout<<"testPoints: "<<strstr(testPoints,"\\\":\\\"")+ strlen(separate1)<<std::endl;
}
return 0;
}
/**********************************************************
// 说明: 单列拼接
// 参数: char* psclum :列明 in;
// char* psval:列值 in;
// char* psoutstr[]:拼接好的串输出
// 返回值: int 0:成功
// 输出实例:"birthday":"asdfasdf"
**********************************************************/
int catColumn(char* psclum ,char* psval, char* psoutstr[])
{
int len = strlen("\"\":\"\"")+strlen(psclum) + strlen(psval);
char * cats = (char*) malloc(len);
if(strlen(psval)>0)
{
sprintf(cats,"\"%s\":\"%s\"",psclum,psval);
}else
{
sprintf(cats,"\"%s\":\"\"",psclum);
}
psoutstr[0] = cats;
return 0;
}
/*******************************************************
// 说明: 字符串拼接,
// 参数: char* psoutstr[]:出参拼接好的字符串
// 返回值: int 0:成功
// 输出实例:[{"birthday":"asdfasdf","flg":false,"id":"asdfasdf","name":"asdfasdf"},{"birthday":"","flg":false,"id":"","name":"bbb"}]
*******************************************************/
int charcat(char* psoutstr[])
{
char*send[1];
char*sendRow[1];
char* birthday[1];
char* flg[1];
char* id[1];
char* name[1];
// 拼接列 "birthday":"asdfasdf"
catColumn("birthday" ,"14:43:03:594", birthday);
catColumn("flg" ,"false", flg);
catColumn("id" ,"0.0000000258", id);
catColumn("name" ,"啊时代发生的", name);
char**DataList=(char**) malloc(sizeof(char**)*1000);
int len = strlen(birthday[0])+ strlen(flg[0])+ strlen(id[0])+ strlen(name[0])+strlen("{,,,}");
// 拼接称单条数据{"birthday":"asdfasdf","flg":false,"id":"asdfasdf","name":"asdfasdf"}
char *rowdata = (char*) malloc(len);
sprintf(rowdata,"{%s,%s,%s,%s}",birthday[0],flg[0],id[0],name[0]);
rowdata[len]='\0';
DataList[0] = (char*) malloc(strlen(rowdata));
DataList[0] = rowdata;
int count = strlen(DataList[0])+ strlen(DataList[0])+1;
for(int i=1;i<1000;i++)
{
catColumn("birthday" ,"FCC1_1_262_01$dh_2", birthday);
catColumn("flg" ,"false", flg);
catColumn("id" ,"369.25847", id);
catColumn("name" ,"L_ADC270-19_1", name);
len = strlen(birthday[0])+ strlen(flg[0])+ strlen(id[0])+ strlen(name[0]) + strlen("{,,,}");
rowdata = (char*) malloc(len);
sprintf(rowdata,"{%s,%s,%s,%s}",birthday[0],flg[0],id[0],name[0]);
rowdata[len]='\0';
DataList[i] = (char*) malloc(strlen(rowdata));
DataList[i] = rowdata;
count = count + strlen(rowdata) +1;
}
//// 拼接成整串"[%s,%s]"
//len = strlen(DataList[0])+ strlen(DataList[0])+strlen("[,]");
//rowdata = (char*) malloc(len);
//sprintf(rowdata,"[%s,%s]",DataList[0],DataList[1]);
rowdata = (char*) malloc(count);
char* CountRowdata = (char*) malloc(count+2);
for(int i= 0; i<1000;i++)
{
if(i<1)
{
strcpy(rowdata,DataList[i]);
}else
{
strcat(rowdata,",");
strcat(rowdata,DataList[i]);
}
}
rowdata[count]='\0';
sprintf(CountRowdata,"[%s]",rowdata);
CountRowdata[count]='\0';
psoutstr[0]=CountRowdata;
return 0;
}
void main(int argc,char*argv[] )
{
WSADATA wsd;
SOCKET server; //服务器socket
SOCKADDR_IN addrSrv;
char sendBuf[100];
char recvBuf[1024];
SOCKADDR_IN addrClient;
SOCKET client; //连接的客户端socket
int len;
char*prevchars[1];
charcat(prevchars);
if(WSAStartup(MAKEWORD(2,2),&wsd)!=0)
{
printf("start up failed!\n");
return ;
}
server=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); //创建socket
addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY); //设置地址
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(6001); //设置端口号
bind(server,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)); //绑定
listen(server,100); //设置最多连接数
len=sizeof(SOCKADDR);
int i=0;
while(true)
{
memset(sendBuf,0x00,100);
memset(recvBuf,0x00,1024);
client=accept(server,(SOCKADDR*)&addrClient,&len); //接收客户端连接
sprintf(sendBuf,"Welcome %s ",
inet_ntoa(addrClient.sin_addr));
printf("%d, recv Begin......!\n",i);
recv(client,recvBuf,1024,0); //接收客户端数据
printf("%d, recvBuf=:%s\n",i,recvBuf);
//send(client,sendBuf,strlen(sendBuf)+1,0); //发送信息客户端
printf("%d, Send=:%s\n",i,prevchars[0]);
send(client,prevchars[0],strlen(prevchars[0])+1,0); //发送信息客户端
printf("%d,Send OK!\n",i);
i++;
closesocket(client);
}
closesocket(client); //关闭连接
WSACleanup();
}
阿刚safelh
- 粉丝: 0
- 资源: 10
最新资源
- 学生宿舍管理系统(毕业设计).zip
- 跨年烟花代码(python)
- springboot-二手物品交易系统的设计与实现-h7ow81fl.zip
- 鲸鱼算法(WOA)优化混合核极限学习机(HKELM)分类预测,多特征输入模型,WOA-HKELM分类预测 多特征输入单输出的
- Android学习笔记
- B站视频助手,视频下载助理
- 双碳目标下综合能源系统低碳运行优化调度Matlab程序,包含光伏、风电、热电联产、燃气锅炉、电锅炉、电储能、碳捕集设备,考虑碳交易 以系统运行成本最小为目标进行调度 没有具体参考文献,这个只是一个授之
- springboot-企业员工薪酬管理系统-n4s02htu.zip
- 基于格雷码的结构光三维重建源码,MATLAB可以跑通
- springboot-人才公寓管理系统-897cjl4r.zip
- 灰狼优化算法GWO算法具有结构简单、需要调节的参数少,容易实现等特点,其中存在能够自适应调整的收敛因子以及信息反馈机制,能够在局部寻优与全局搜索之间实现平衡,因此在对问题的求解精度和收敛速度方面都有良
- 新版Android开发教程与学习笔记
- 差分进化算法DE(Differential Evolution)算法是在遗传算法等进化思想的基础上提出的,本质是一种多目标(连续变量)优化算法,用于求解多维空间中整体最优解 Matlab 程序
- 半桥 全桥LLC电路 谐振变器仿真,采用频率控制(PFM变频控制)输出电压闭环,软开关 原边半桥+副边半波整流 原边半桥+副边全桥整流 原边全桥+副边半波整流 原边全桥+副边全桥整流都有 matlab
- 适合练手、课程设计、毕业设计的Java项目源码:进销存管理系统(jsp+mssql).rar
- video_250112_204741.mp4
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈