Boost_udp错误
注意一点:当我们不同PC机间进行通信的时候,IP和端口号是不一样的。之前遇到的问题是,boost_system_error,这是因为我们在写程序的时候,发送和接收绑定了同一个端口,导致程序出错。
而且,CANET支持组播通信,也就是说,一个通道可以同时向多个端口发送数据。
之前一直搞错的原因就是端口重复绑定了,导致错误。

- /*
- * Copyright (c) 2015,北京智行者科技有限公司
- * All rights reserved.
- *
- * 文件名称:Boost_UDP.h
- * 文件标识:见软件框架协议
- * 摘 要:UDP读写类
- *
- * 当前版本:1.0
- * 作 者:zhuxuekui
- * 完成日期:2015年11月30日
- * 修 改:
- *
- * 取代版本:1.0
- * 原作者 :zhuxuekui
- * 完成日期:2015年11月30日
- */
- #ifndef BOOST_UDP_H
- #define BOOST_UDP_H
- #include "Utils.h"
- using
namespace boost; - #define RECVSIZE 1024
- class Boost_UDP
- {
- public:
- Boost_UDP(boost::asio::io_service &io_service,string pcIP, int pcPort, string canetIP, int canetPort):udp_sock(io_service)
- {
- m_canetIP = canetIP;
- m_canetPort = canetPort;
- m_pcIP = pcIP;
- m_pcPort = pcPort;
- }
- ~Boost_UDP()
- {
- udp_sock.close();
- }
- //开始socket,绑定端口等。 绑定PC机端口号,而且还不能用 127.0.0.1, 不然会出错,很奇怪的原因。
- void start_sock()
- {
- // here the ip can change to 192.168.1.33
- boost::asio::ip::udp::endpoint local_add(boost::asio::ip::address_v4::from_string(m_pcIP),m_pcPort);
- udp_sock.open(local_add.protocol());
- udp_sock.bind(local_add);
- }
- //收数据
- int receive_data(unsigned char buf[])
- {
- boost::mutex::scoped_lock lock(mutex);
- //donot change 目的端口与发送端口现在是不一样的
- boost::asio::ip::udp::endpoint send_endpoint(boost::asio::ip::address_v4::from_string(m_pcIP),m_pcPort); //这里的endpoint是PC机的IP和端口号
- int ret = udp_sock.receive_from(boost::asio::buffer(buf,RECVSIZE),send_endpoint);//堵塞模式
- return ret;
- }
- //发送数据
- int send_data(unsigned char str[], int len)
- {
- boost::mutex::scoped_lock lock(mutex);
- //donot change
- boost::asio::ip::udp::endpoint send_endpoint(boost::asio::ip::address_v4::from_string(m_canetIP),m_canetPort); //canet的IP和端口号
- int ret = udp_sock.send_to(boost::asio::buffer(str,len),send_endpoint);
- return ret;
- }
- public:
- string m_canetIP;
- int m_canetPort;
- string m_pcIP;
- int m_pcPort;
- boost::asio::ip::udp::socket udp_sock;
- mutable boost::mutex mutex;
- };
- #endif
Boost_udp错误的更多相关文章
- 航空概论(历年资料,引之百度文库,PS:未调格式,有点乱)
航空航天尔雅 选择题1. 已经实现了<天方夜谭>中的飞毯设想.—— A——美国2. 地球到月球大约—— C 38 万公里3. 建立了航空史上第一条定期空中路线—— B——德国4. 对于孔明 ...
- 日期格式代码出现两次的错误 ORA-01810
错误的原因是使用了两次MM . 一.Oracle中使用to_date()时格式化日期需要注意格式码 如:select to_date('2005-01-01 11:11:21','yyyy-MM-dd ...
- ASP.NET Core应用的错误处理[3]:ExceptionHandlerMiddleware中间件如何呈现“定制化错误页面”
DeveloperExceptionPageMiddleware中间件利用呈现出来的错误页面实现抛出异常和当前请求的详细信息以辅助开发人员更好地进行纠错诊断工作,而ExceptionHandlerMi ...
- ASP.NET Core应用的错误处理[2]:DeveloperExceptionPageMiddleware中间件如何呈现“开发者异常页面”
在<ASP.NET Core应用的错误处理[1]:三种呈现错误页面的方式>中,我们通过几个简单的实例演示了如何呈现一个错误页面,这些错误页面的呈现分别由三个对应的中间件来完成,接下来我们将 ...
- 实时的.NET程序错误监控产品Exceptionless
Exceptionless可以对ASP.NET, Web API, WebForms, WPF, Console, 和 MVC 应用提供错误监控.上传.报表服务.使用时需要在Exceptionless ...
- 一个粗心的Bug,JSON格式不规范导致AJAX错误
一.事件回放 今天工作时碰到了一个奇怪的问题,这个问题很早很早以前也碰到过,不过没想到过这么久了竟然又栽在这里. 当时正在联调一个项目,由于后端没有提供数据接口,于是我直接本地建立了一个 json ...
- SQL Server 致程序员(容易忽略的错误)
标签:SQL SERVER/MSSQL/DBA/T-SQL好习惯/数据库/需要注意的地方/程序员/容易犯的错误/遇到的问题 概述 因为每天需要审核程序员发布的SQL语句,所以收集了一些程序员的一些常见 ...
- C# - 值类型、引用类型&走出误区,容易错误的说法
1. 值类型与引用类型小总结 1)对于引用类型的表达式(如一个变量),它的值是一个引用,而非对象. 2)引用就像URL,是允许你访问真实信息的一小片数据. 3)对于值类型的表达式,它的值是实际的数据. ...
- 记一个mvn奇怪错误: Archive for required library: 'D:/mvn/repos/junit/junit/3.8.1/junit-3.8.1.jar' in project 'xxx' cannot be read or is not a valid ZIP file
我的maven 项目有一个红色感叹号, 而且Problems 存在 errors : Description Resource Path Location Type Archive for requi ...
随机推荐
- 自定义控件--CircleImageView(类似于QQ、微信圆形头像自定义控件)
现在基本上所有的需要用户注册的APP都有一个需要用户上传头像的需求,上传的头像基本都是类似于QQ.微信等社交应用圆形头像.最近,正在做的一个社交应用多处需要用到这种圆形头像的处理,总不能每次都对图片做 ...
- iOS加载程序视图的方式
The UIViewController class provides built-in support for loading a view controller's views whenever ...
- 弃用的异步get和post方法之代理方法
#import "ViewController.h" #import "Header.h" @interface ViewController () <N ...
- Android Studio安装使用图文教程(转)
[开发环境] 物理机版本:Win 7旗舰版(64位) Java SDK版本:jdk1.8.0_20(64位) Android SDK版本:Android 4.4(API 20) Android Stu ...
- iOS背景模糊效果3中方法总结
1.首先得把界面转化成图片,给uiview加一个类目如下: #import "UIView+Screen.h" @implementation UIView (Screen) // ...
- 菜鸟程序员之Asp.net MVC Session过期异常的处理
小赵是刚毕业的计算机专业方面的大学生,4年的大学时间里面,他读过了很多编程方面的数据,也动手也了很多代码.现在毕业了,他如愿的加入了T公司,开始了自己的程序员生涯.他信心满满,相信自己4年的学习到的东 ...
- 使用POI实现数据导出Excel表格
package cn.sh.bzt.kwj.action; import java.io.IOException; import java.io.OutputStream; import java.t ...
- 问题解决——OpenGL超级宝典 关于gltDrawTorus的错误解决
看OpenGL超级宝典的时候,遇到一个函数 “gltDrawTorus”,在TRANSFORM和SPHEREWORLD中都有用到.但是一开始在自己写示例代码里时却没法使用,而在作者的代码目录结构下却可 ...
- Android开发之 adb 启动问题或是部署应用不成功,出现“The connection to adb is down, and a severe error has occured.”错误
首先是今天想测试下应用,没有问题的话就进行下一步的操作来着,结果遇到这个问题, The connection to adb is down, and a severe error has occure ...
- MSDE简介
MSDE的全程是Microsoft SQL Server Desktop Engine,它是一个基于 SQL Server 核心技术构建的数据引擎.MSDE 2000 支持单处理器和双处理器,是面向小 ...