c++socket如何将客户端计数_C++Socket通信(客户端和服务器)

#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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值