boost asio linux原理,2019-12-12 linux c++ boost asio vector传递图像数据

满足的需求

客户端传递vector到服务端生成图片

服务端代码

#include

#include

#include

using namespace std;

int main(int argc, char* argv[])

{

using namespace boost::asio;

// 所有asio类都需要io_service对象

io_service iosev;

// socket对象

ip::tcp::socket socket(iosev);

// 连接端点,这里使用了本机连接,可以修改IP地址测试远程连接

ip::tcp::endpoint ep(ip::address_v4::from_string("127.0.0.1"), 8888);

// 连接服务器

boost::system::error_code ec;

socket.connect(ep,ec);

// 如果出错,打印出错信息

if(ec)

{

std::cout << boost::system::system_error(ec).what() << std::endl;

return -1;

}

// 接收数据

char buf[100];

size_t len=socket.read_some(buffer(buf), ec);

std::cout.write(buf, len);

//发送数据

std::cout<

// socket.write_some(buffer("boost_client3.cpp:hello world!"), ec);

//发送vector数据

vector t_32;

for (int i = 0; i < 40000; ++i) {

if (i < 20000) {

t_32.push_back(250);

} else{

t_32.push_back(0);

}

// t_32.push_back(3);

}

std::cout<

socket.write_some(buffer(t_32), ec);

return 0;

}

客户端代码

#include

#include

#include

using namespace std;

int main(int argc, char* argv[])

{

using namespace boost::asio;

// 所有asio类都需要io_service对象

io_service iosev;

// socket对象

ip::tcp::socket socket(iosev);

// 连接端点,这里使用了本机连接,可以修改IP地址测试远程连接

ip::tcp::endpoint ep(ip::address_v4::from_string("127.0.0.1"), 8888);

// 连接服务器

boost::system::error_code ec;

socket.connect(ep,ec);

// 如果出错,打印出错信息

if(ec)

{

std::cout << boost::system::system_error(ec).what() << std::endl;

return -1;

}

// 接收数据

char buf[100];

size_t len=socket.read_some(buffer(buf), ec);

std::cout.write(buf, len);

//发送数据

std::cout<

// socket.write_some(buffer("boost_client3.cpp:hello world!"), ec);

//发送vector数据

vector t_32;

for (int i = 0; i < 40000; ++i) {

if (i < 20000) {

t_32.push_back(250);

} else{

t_32.push_back(0);

}

// t_32.push_back(3);

}

std::cout<

socket.write_some(buffer(t_32), ec);

return 0;

}

vector.resize尺寸要够大,反正数组越界就是 核心已转储

cartographer的程序中传数据总是出问题,同样的代码,放在cartographer中,图片数据传过去都是0,在这边都是好的。

这是同步异步问题

还是缓存问题呢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值