socket编程——tcp客户端实现框架对比分析

在宝书《Unix网络编程》中,作者针对客户端提出了大概5种编程框架,分别如下: (1)停-等方式。 (2)select加阻塞式IO版本。 (3)非阻塞IO版本。 (4)多进程fork版本。 (5)多线程版本。 在16.2.2小节中,对比总结了这几种方式,作者推荐的方式是:推荐使用 多进...

2019-04-28 10:31:41

阅读数 87

评论数 0

socket编程——服务器异常对客户端的影响

我们在编写socket客户端程序时,必须要提前考虑 服务器异常 时的应对措施,服务器的动作主要有3种: (1)服务器正常,返回给客户端正常数据,也就是正常的数据业务,那么客户端的套接字变为可读,并且read返回一个大于0的值(即读入数据的字节数)。 (2)服务器正常终止,给客户端发送FIN...

2019-04-24 16:35:11

阅读数 82

评论数 0

"慢系统调用"和EINTR错误

本文引用了《信号中断 与 慢系统调用》中的内容,感谢许老师的精彩分享。 所谓慢系统调用(slow system call):指的是那些可能永远阻塞的系统调用,永远阻塞的意思是指调用有可能永远无法返回,多数网络支持函数都属于这一类,比如socket编程中的 accept 函数:如果没有客户连接到...

2019-04-24 15:56:52

阅读数 34

评论数 0

socket编程——进一步理解accept函数

在前面的文章《TCP套接字编程--常用函数小结》中,我们分析了socket的常用函数,其他的函数,我们还比较容易理解,但是accept函数的意义容易被忽略。我们来总结下使用要点: 1)accept函数负责从客户端“连接”的队列中返回一个最近的新连接。 2)accept只负责“接客”,不干别的,...

2019-04-19 15:07:29

阅读数 75

评论数 0

socket编程——深入理解“单进程通过select实现并发”

在前面的文章《socket编程——服务器并发》中,我们看到服务器的并发可以简单的通过fork 子进程来实现,这种方式比较方便,但是也有些缺点,就是相对开销 比较大,当然了,这里说的也只是相对开销大,毕竟现在的处理器功能相对强大。在实际的工程项目中,还有一种方式,就是结合select机制,也可以实现...

2019-04-19 14:42:52

阅读数 111

评论数 0

深入理解select

在前面的文章《嵌入式Linux编程之select使用总结》中,我们分析了select的一些基本用法,简单的说,我们可以将select理解为一个poll(轮询)框架,也可以理解为一个“事件驱动”编程编程框架,我们可以将我们感兴趣的 来我们监听集,注意,这里用的是“集”,也就是多个、组合文件描述符放到...

2019-04-18 22:42:42

阅读数 29

评论数 0

socket编程——服务器并发

前言,本文引用了《Unix网络编程》,向作者致以 崇高的敬意。 在前面的文章《 socket编程——TCP server编程框架分析》中,我们分析了一个典型的tcp server案例。真正使用的时候,服务器并发是经常遇到的。只能响应一个客户端的服务器叫迭代服务器,能同时 响应多个客户端访问的叫...

2019-04-17 20:56:09

阅读数 87

评论数 0

socket编程——常用数据结构及头文件分析

1、IPv4套接字地址结构 sockaddr_in,对应头文件 <netinet/in.h> struct in_addr{ in_addr_t s_addr; //32bit 的IPv4地址 }; struct sockaddr_in{ ...

2019-04-17 15:11:19

阅读数 79

评论数 0

socket编程——TCP server编程框架分析

在上一篇文章 《TCP套接字编程--常用函数小结》我们分析了套接字编程的一些常用函数,本文基于这些文章,结合一个TCP server服务程序进一步分析一下socket编程。程序框架如下: #include <sys/socket.h> #include &l...

2019-04-17 11:01:34

阅读数 34

评论数 0

TCP套接字编程--常用函数小结

使用套接字进行TCP应用编程十分 方便,因为Unix/Linux的设计是清晰分层的,应用层只需要使用套接字的接口API函数,具体的实现是由内核来做的,而内核只负责底层 实现,并不关心应用层逻辑,好处多多,下面就分析小结下TCP套接字的常用函数: 1. socket 函数 为了进行网络I/O,第...

2019-04-15 11:25:46

阅读数 44

评论数 0

libmodbus协议栈4—— 总结

通过前面三篇文章,基本上可以了解基于libmodbus库的开发流程,而libmodbus比较牛的地方,不仅仅可以实现modbus RTU的支持,它还支持modbus TCP,而且由于采用了所谓的后端函数,也就是提供了 标准 通用的 API接口,所以开发modbus TCP的主从设备,与开发modb...

2019-04-10 21:57:40

阅读数 224

评论数 0

libmodbus协议栈3—— Linux下 modbus RTU 从机 开发案例

上一篇,我们讲述了基于libmodbus库进行主机 modbus通信开发案例,libmodbus协议栈2—— Linux下 modbus RTU master 开发案例,本文介绍一下如何进行从机开发。 我们还是先对开发流程做个梳理: 1. 初始化 modbus 指针 2. 设置从站ID...

2019-04-10 21:33:48

阅读数 597

评论数 0

libmodbus协议栈2—— Linux下 modbus RTU master 开发案例

使用libmodbus库进行应用程序master(主机)开发,基本顺序如下: 1. 初始化 modbus 指针 2. 设置从站ID 3. 建立连接 4. 读取保持寄存器/输入寄存器/离散输入/线圈输入 5. 写单个寄存器/多个寄存器/多位数据 6. 关闭连接 libmodbus为了支持跨...

2019-04-10 20:44:08

阅读数 550

评论数 0

libmodbus协议栈1——Linux下详细移植步骤(配置、生成)

libmodbus是一个免费的modbus协议栈,这个协议栈是跨平台的,也就是说既可以在Windows下以.dll库的提供方式,也可以在Unix/Linux下以.a/.so库的形式提供。一般在小型嵌入式硬件中,如果是非Linux系统或裸机,我们要实现设备modbus通信,要么使用freemodbu...

2019-04-10 16:08:23

阅读数 555

评论数 1

gcc "-I"(大写i)、 "-l"(小写l)、"-L"(大写L)的使用小结

我们在Unix/Linux系统编程时,会涉及到库、 头文件等文件的引用,这个在IDE中,IDE软件界面中提供了配置接口,比如IAR中的预编译,画面如下: 上面的红框的意思就是告诉 编译器,要将上面的目录包含,一起编译,Keil和其他的IDE中也有类似的操作。 在Unix/Linux下,是信...

2019-04-10 11:27:12

阅读数 119

评论数 0

嵌入式Linux 串口编程系列4——EasyARM287开发板通过freemodbus实现Modbus通信

前面的文章分析了串口的一些基本知识,在工业应用中,串口通信比较常用的协议就是Modbus RTU,freemodbus是一款微型modbus协议栈,之前对各种单片机、小型处理器支持的比较好,从V1.6版本开始,对Linux也支持了,下面先简单的分析总结下freemodbus的工作流程: 我们知...

2019-04-07 21:23:07

阅读数 75

评论数 0

嵌入式Linux 串口编程系列3——通过VTIM、VMIN、select实现串口不定长数据接收功能

上一篇文章中,我们详细分析了VTIM和VMIN的功能, 《嵌入式Linux 串口编程系列2--termios的VMIN和VTIME深入理解》 也明白了这两个参数设计的初衷和使用方法,接下来我们 就详细的说明一下,具体编程中,我们要将VMIN 设置的足够大,将VTIME设置的尽量小,同时在应用...

2019-04-05 08:56:03

阅读数 101

评论数 0

嵌入式Linux 串口编程系列2--termios的VMIN和VTIME深入理解

在上一篇文章中,我们介绍了串口的一些基本知识、串口配置接口 termios结构体的概念,串口的配置参数有n多个,这里面不用都背下来,什么时候使用,翻看手册即可,但是有两个 参数是一定要理解的,就是VMIN和VTIME。上一篇文章中已经介绍了这两个概念,下面进一步解释: VMIN:指定串口至少接收...

2019-04-05 08:52:37

阅读数 67

评论数 0

嵌入式Linux 串口编程系列1——基本知识、termios结构体

对于嵌入式系统开发而言,串口应用编程几乎是使用最 广泛的,应用案例如下: (1)串口与 外围设备通信,比如串口作为主设备,访问各种仪表从设备,协议一般有自有协议、Modbus通信协议。 (2)开发的设备作为从设备,外部设备通过串口进行相关通信,也比如Modbus通信协议及各种其他 私有协议。 ...

2019-04-05 08:17:41

阅读数 81

评论数 0

提示
确定要删除当前文章?
取消 删除