通信

ACE中UDP通信

巧了我就是萌 提交于 2020-04-06 17:17:11
udp是一种无连接的协议,提供 无连接不可靠 的服务。 在ace中,通过 ACE_SOCK_Dgram 类提供udp通信服务,ACE_SOCK_Dgram和ACE_SOCK_Stream的API非常类似,一样提供了send,recv及close等常用操作,这里就不再累述了。 udp通信时无需像tcp那样建立连接和关闭连接,tcp编程时需要通过accept和connect来建立连接,而udp通信省略了这一步骤,相对来说编程更为简单。 由于udp通信时无建立连接,服务器端不能像Tcp通信那样在建立连接的时候就获得客户端的地址信息,故 服务器端不能主动对客户端发送信息 (不知道客户端的地址),只有等到收到客户端发送的udp信息时才能确定客户端的地址信息,从而进行通信。 udp通信过程如下: 服务器端绑定一固定udp端口,等待接收客户端的通信。 客户端通过服务器的ip和地址信息直接对服务器端发送消息。 服务器端收到客户端发送的消息后获取客户端的ip和端口信息,通过该地址信息和客户端通信。 下面代码为EchoServer的udp版: //server.cpp #include <ace/SOCK_Dgram.h> #include <ace/INET_Addr.h> #include <ace/Time_Value.h> #include <string> #include

ACE中TCP通信

谁都会走 提交于 2020-04-06 17:16:27
概述: 传输控制协议TCP(Transmission Control Protocol):TCP提供可靠的、面向连接的运输服务,用于高可靠性数据的传输。TCP协议的可靠性是指 保证每个tcp报文能按照发送顺序到达客户端 。 Tcp通信过程一般为如下步骤: 服务器绑定端口,等待客户端连接。 客户端通过服务器的ip和服务器绑定的端口连接服务器。 服务器和客户端通过网络建立一条数据通路,通过这条数据通路进行数据交互。 常用API: 1. ACE_INET_Addr类。 ACE" 地址 " 类 ACE_Addr 的子类, 表示 TCP/IP 和 UDP/IP 的地址。它通常包含机器的 ip 和端口信息,通过它可以定位到所通信的进程。 定义方式: ACE_INET_Addr addInfo(3000, "192.168.1.100" ); 常用 方法: get_host_name 获取主机名 get_ip_address 获取ip地址 get_port_number 获取端口号 2. ACE_SOCK_Acceptor类。 服务期端使用,用于绑定端口和被动地接受连接。 常用方法: open 绑定端口 accept建立和客户段的连接 3. ACE_SOCK_Connector类。 客户端使用,用于主动的建立和服务器的连接。 常用方法: connect() 建立和服务期的连接。 4. ACE

珍藏:ACE自适配通信环境中文技术文档

独自空忆成欢 提交于 2020-04-06 17:16:13
C++编写网络程序可选框架: 1、Winsock API:C语言格式的,纯API函数,感觉上和用OCI整Oracle数据库程序差不多 2、MFC的CSocket类,跨平台肯定Over。 3、ACE网络库:据说目前最强大的网络库,可解决跨平台问题,性能良好 4、Indy:原来在BCB中用过,VC不知道可以不,很好用,没查。 5、Boost.Asio网络库:新出炉不久,资源匮乏,用于工作有点冒险。 6、Boost.Socket:据说因为速度备受批评,将要被移出Boost的SandBox。 在5月份开始的时空数据库引擎之旅中,出于工作需要探索C++下的网络开发,综合比较了上边几种框架后最终选定ACE。 ACE学习之路从马维达先生的《ACE自适配通信环境中文技术文档》开始,收藏在这里。 ACE学习第一站:马维达先生的主页 http://www.flyingdonkey.com/ ACE自适配通信环境中文技术文档 | 下载 | 致谢 | ACE自适配通信环境 Douglas C. Schmidt 一、ACE综述   ACE自适配通信环境(ADAPTIVE Communication Environment)是可以自由使用、开放源码的面向对象(OO)框架(Framework),在其中实现了许多用于并发通信软件的核心模式。ACE提供了一组丰富的可复用C++ Wrapper Facade(包装外观

一文最全科普FPGA技术知识

馋奶兔 提交于 2020-04-06 13:55:03
FPGA 是可以先购买再设计的“万能”芯片。FPGA (Field Programmable Gate Array)现场可编程门阵列,是在硅片上预先设计实现的具有可编程特性的集成电路,它能够按照设计人员的需求配置为指定的电路结构,让客户不必依赖由芯片制造商设计和制造的 ASIC 芯片。广泛应用在原型验证、通信、汽车电子、工业控制、航空航天、数据中心等领域。 Altera LUT4 架构 FPGA 硬件三大指标: 制程、门级数及 SERDES 速率,配套 EDA 软件工具同样重要。比较 FPGA 产品可以从技术指标入手。从 FPGA 内部结构来看,主要包括:可编程输入/输出单元(I/O)、可编程逻辑块(LC)、 完整的时钟管理(CMT)、嵌入块式 RAM(BRAM)、布线资源、内嵌的底层功能单元和专用硬件模块等。 根据赛灵思披露的数据,一个 LUT6 等效 1.6 个 LC,一个 LC 对应几十到上百“门”,1000 万门约等于 10 万 LC,即 100K CLB 级别 FPGA。与 ASIC 不同的是,客户在选购 FPGA 产品不仅考虑硬件参数,配套 EDA 软件的性能也同样重要。目前国内厂商高端产品在硬件性能指标上均与赛灵思高端产品有较大差距。 相对于ASIC,FPGA具有3点优势: 1、可编辑,更灵活 2、产品上市时间短,节省了 ASIC 流片周期 3、避免一次性工程费用

计算机网络中的一些概念

别说谁变了你拦得住时间么 提交于 2020-04-06 13:34:51
OSI,TCP/IP,五层协议的体系结构,以及各层协议 答:OSI分层 (7层):物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。 TCP/IP分层(4层):网络接口层、 网际层、运输层、 应用层。 五层协议 (5层):物理层、数据链路层、网络层、运输层、 应用层。 每一层的协议如下: 物理层:RJ45、CLOCK、IEEE802.3 (中继器,集线器) 数据链路:PPP、FR、HDLC、VLAN、MAC (网桥,交换机) 网络层:IP、ICMP、ARP、RARP、OSPF、IPX、RIP、IGRP、 (路由器) 传输层:TCP、UDP、SPX 会话层:NFS、SQL、NETBIOS、RPC 表示层:JPEG、MPEG、ASII 应用层:FTP、DNS、Telnet、SMTP、HTTP、WWW、NFS 每一层的作用如下: 物理层:通过媒介传输比特,确定机械及电气规范(比特Bit) 数据链路层:将比特组装成帧和点到点的传递(帧Frame) 网络层:负责数据包从源到宿的传递和网际互连(包PackeT) 传输层:提供端到端的可靠报文传递和错误恢复(段Segment) 会话层:建立、管理和终止会话(会话协议数据单元SPDU) 表示层:对数据进行翻译、加密和压缩(表示协议数据单元PPDU) 应用层:允许访问OSI环境的手段(应用协议数据单元APDU) ARP是地址解析协议

Modbus超时时间设置

☆樱花仙子☆ 提交于 2020-04-06 12:19:01
用于学习记录 原文链接:https://blog.csdn.net/sunxboy/java/article/details/84499791 Modbus通讯时,需要连续读取多个现场设备的数据,虽然也编写了Modbus轮询的程序,但是有时还是无法正常通讯。有时虽然能够保证通讯,但是所有现场设备的轮询周期很长。 本文将从 MBUS_CTRL的超时时间参数设置 来说明超时时间设置的重要性。 Modbus通讯协议是单主多从的通讯协议,如果需要读取多个现场Modbus从站设备的数据时,需要自己编写Modbus轮询程序来实现,轮询时每次只能激活一个Modbus的读写功能块。以常见的主站读取从站的寄存器为例,主站发出请求需要8个字节,从站返回响应为5+2*n个字节。其中n为寄存器个数。 如果通讯速率为9600时,按照常规的Modbus RTU,8个数据位、1个停止位、偶校验方式,每传输1个字节数据需要的时间为:(8+1+1)/9600=1.04ms/Byte 因此,主站发出响应到从站返回数据的时间周期为:(8+5+2*n)*1.04+T1+T2,其中 n 为寄存器个数,T1为从站的响应时间(如果是PLC,则为PLC的扫描时间),T2为通讯余量,一般为20~50ms。如果读取10个字的数据,从站响应时间为50ms,则整个周期为:(8+5+2* 10 )*1.04+50+50=134.32ms

docker容器虚拟化

白昼怎懂夜的黑 提交于 2020-04-06 11:21:54
目录 1.虚拟化网络 2.单节点容器间通信 3.不同节点容器间通信 1.虚拟化网络 Network Namespace 是 Linux 内核提供的功能,是实现网络虚拟化的重要功能,它能创建多个隔离的网络空间,它们有独自网络栈信息。不管是虚拟机还是容器,运行的时候仿佛自己都在独立的网络中。而且不同Network Namespace的资源相互不可见,彼此之间无法通信。 假如我们的物理机有4块物理网卡,我们要创建4个名称空间,而这些设备是可以单独关联至某个单独的名称空间使用的 如上图所示,把第一块网卡分配给第一个名称空间,第二块分给第二个名称空间,第三块分给第三个名称空间,第四块分给第四个名称空间。此时其它名称空间都是看不见当前所在名称空间的,因为一个设备只能属于一个名称空间。 这种方式使得每一个名称空间都能配置IP地址,并且与外部网络直接通信,因为它们使用的是物理网卡。 但如果我们所拥有的名称空间数量超过物理网卡数量呢?此时我们可以使用虚拟网卡设备,用纯软件的方式来模拟一组设备来使用。Linux内核级支持2种级别设备的模拟,一种是二层设备,一种是三层设备。 Linux内核模拟的二层设备,每个网络接口设备是成对出现的,可以模拟为一根网线的两端,其中一端模拟主机的虚拟网卡,另一端模拟虚拟交换机,就相当于让一个主机连到一个交换机上去。Linux内核原生支持二层虚拟网桥设备

我对阿里云服务器公网宽带的理解及误区(以1M为例)

强颜欢笑 提交于 2020-04-06 10:56:58
码笔记发现很多同学对阿里云服务器公网宽带不太理解,比如公网宽带实际下载速度,阿里云宽带的上行和下行方向以及上传和下载是否收费的问题,码笔记分享笔者对阿里云公网宽带的理解,以1M宽带为例: 阿里云公网宽带的实际下载速度的误区 很多同学认为多少兆的宽带下载速度就是多少M每秒,实际上这是错误的。以1M宽带为例,1M宽带的实际下载速度并不是1M/S,而是128KB/S。为什么1M宽带下载速度不是1M/秒呢?这是由于服务商提供的宽带单位是指比特bit,而下载速度使用的单位是字节Byte,8比特bit = 1字节Byte,所以,宽带和下载速度之间有个8倍的关系。 综上,无论是阿里云还是其他云厂商,1M公网宽带的下载速度峰值都是128KB/S,5M公网宽带的下载速度峰值为128KB/S*5=640KB/秒,10M公网宽带的下载速度峰值为128KB/S*10 = 1.25M/秒,以此类推。关于公网宽带的计费模式及说明,参考官方文档( 公网带宽计费方式详解 - 阿里云 ),文档说的很清楚了,码笔记就不多赘述了。 阿里云宽带上行和下行的理解 阿里云宽带根据方向不同分为上行和下行,那么什么是上行?什么是下行?以云服务器为中心,流量流出云服务器为下行,流量流入云服务器为上行。码笔记来说说上行和下行典型的使用场景,大家就知道了: 上行宽带(入网):用户上传文件到云服务器占用的是上行宽带,上行宽带是免费的;

第一章计算机网络和因特网-day01

扶醉桌前 提交于 2020-04-06 10:41:27
什么是因特网: 其一:构成因特网的基本硬件与软件。 其二:为分布式应用提供服务的联网基础设施。 终端机器称为主机( host ) 或者端系统( end system ) 端系统通过通信链路(communication link)和分组交换机(packet switch)连接。 分组:计算机间传递的被包装起来的信息包称为分组。 注:数据在传递过程中是会被分段的,分组包含信息段与被修饰的首部字节。 路径:一个分组经历过的一系列通信链路与分组交换机。 ISP(Internet service provider)因特网服务提供商。 协议:定义了多个通信实体间交换的报文格式和次序,以及报文发送/接受报文采取的动作。 注:涉及到多个端系统之间的通信都受协议制约。 网络边缘:从书中角度看指的就是端系统。 接入网:将端系统连接到边缘路由器(edge router)的物理链路。 注:在生活中接入网实际上就是指我们办理的宽带业务,手机的无线网络等。 接入网需要具体的物理媒介:1.双绞铜线、2.同轴电缆、3.光纤、4.陆地无线电信道、5.卫星无线电信道。 分组交换技术:   1.存储转发传输  出现于多数分组交换机。指:在交换机进行数据输出时,需要先接受整个分组。   2.排队时延  出现于当链路繁忙时,分组需要在交换机处进入输出队列等待。当出现分组队列被充满的情况,就会出现分组丢失(丢包)现象。