#include "stdafx.h"#include#include#include#include#include#include#include
#pragma comment(lib,"ws2_32.lib")
using namespacestd;
typedefstructDate {floatm1;floatm2;floatm3;floatm_roll;floatm_pitch;floatm_rotate;
}Datablock;void splitEx(vector&strs, const string& src, stringseparate_character)
{int separate_characterLen = separate_character.size();//分割字符串的长度,这样就可以支持如“,,”多字符串的分隔符
int lastPosition = 0, index = -1;while (-1 != (index =src.find(separate_character, lastPosition)))
{
strs.push_back(src.substr(lastPosition, index-lastPosition));
lastPosition= index +separate_characterLen;
}string lastString = src.substr(lastPosition);//截取最后一个分隔符后的内容
if (!lastString.empty())
strs.push_back(lastString);//如果最后一个分隔符后还有内容就入队
}float str_float(stringa) {floatb;
stringstream ss;//string 转 int
ss <
ss>>b;returnb;
}intmain()
{
cout<< "客户端启动" <
WSADATA wsaD;
WSAStartup(MAKEWORD(1, 1), &wsaD);//创建客户端socket
SOCKET sclient =socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);//连接服务器
u_long iMode = 1;//如果设置为0,为阻塞式的
ioctlsocket(sclient, FIONBIO, &iMode);structsockaddr_in servaddr;
servaddr.sin_family=AF_INET;
cout<< "请输入局域网IP地址:" <
cin>>ipaddress;
cout<
servaddr.sin_addr.s_addr= inet_addr(ipaddress.c_str()); //指定服务器
servaddr.sin_port = htons(8088); //指定端口
cout << endl<
connect(sclient, (struct sockaddr*)&servaddr, sizeof(servaddr)); //通过套接字连接主机
char buf[500];
Datablock resu_data;while (true) {//存储接收的字符
int len = recv(sclient, buf, sizeof(buf), 0); //通过连接套接字接收数据
if (len > 0)
{
vectorresult;
cout<< "客户说:" << buf <
cout<< test <
splitEx(result, test,"-");
resu_data.m1= str_float(result[0]);
resu_data.m2= str_float(result[1]);
resu_data.m3= str_float(result[2]);
resu_data.m_roll= str_float(result[3]);
resu_data.m_pitch= str_float(result[4]);
resu_data.m_rotate= str_float(result[5]);
cout<< resu_data.m1 <
cout<< resu_data.m2 <
cout<< resu_data.m3 <
cout<< resu_data.m_roll <
cout<< resu_data.m_pitch<
cout<< resu_data.m_rotate <
}
}return 0;
}