![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
网络通信
Hanson_1999
0
展开
-
Linux下利用socket进行通信
1.socket计算机专业术语:网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。建立网络通信连接至少要一对端口号(socket)。socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口;HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通...原创 2019-03-26 14:37:30 · 1345 阅读 · 0 评论 -
Linux多进程编程fork和vfork系统调用
服务器按处理方式可以分为迭代服务器和并发服务器两类。平常用C写的简单Socket客户端服务器通信,服务器每次只能处理 一个客户的请求,它实现简单但效率很低,通常这种服务器被称为迭代服务器。 然而在实际应用中,不可能让一个服务器长时间 地为一个客户服务,而需要其具有同时处理 多个客户请求的能力,这种同时可以处理多个客户请求的服务器称为并发服务器,其 效率很 高却实现复杂。在Linux的服务器编程中...原创 2019-03-26 16:10:00 · 420 阅读 · 0 评论 -
Linux下多线程编程以及互斥锁
在操作系统原理的术语中,线程是进程的一条执行路径。线程在Unix系统下,通常被称为轻量级的进程,线程虽然不是进 程,但却可以看作是Unix进程的表亲,所有的线程都是在同一进程空间运行,这也意味着多条线程将共享该进程中的全部系统资 源,如虚拟地址空间,文件描述符和信号处理等等。但同一进程中的多个线程有各自的调用栈(call stack),自己的寄存器环境 (register context),自己的...原创 2019-03-27 13:49:48 · 390 阅读 · 0 评论 -
Linux多路复用select
前面提到过,使用多进程和多线程来提高系统运行的效率,多线程的并发相对多进程来说占用的资源更少,效率相比多进程更快, select()函数允许进程指示内核等待多个事件(文件描述符)中的任何一个发生,并只在有一个或多个事件发生或经历一段指定时 间后才唤醒它,然后接下来判断究竟是哪个文件描述符发生了事件并进行相应的处理。#include <sys/select.h> #include &...原创 2019-03-27 17:10:14 · 262 阅读 · 0 评论 -
Linux多路复用poll
poll函数的原型说明如下:#include <poll.h>struct pollfd { int fd; /* 文件描述符 */ short events; /* 等待的事件 */ short revents; /* 实际发生了的事件 */ } ;int poll(struct pollfd *fds,...原创 2019-03-27 22:00:58 · 245 阅读 · 0 评论 -
Linux多路复用epoll
在linux 没有实现epoll事件驱动机制之前,我们一般选择用select或者poll等IO多路复用的方法来实现并发服务程序。自 Linux 2.6内核正式引入epoll以来,epoll已经成为了目前实现高性能网络服务器的必备技术,在大数据、高并发、集群等一些名 词唱得火热之年代,select和poll的用武之地越来越有限,风头已经被epoll占尽。select的缺点:单个进程能够监视...原创 2019-03-28 15:02:47 · 241 阅读 · 0 评论 -
TLV自定义通信协议的编码和解析
以下内容均为原创,如有错误,欢迎指正,感激!!!说到通信协议,不得不谈的就是计算机网络中的TCP/IP协议,Linux C提供的网络socketAPI就是基于TCP/IP协议的可靠通信。在计算机网络中,为提高数据传输的可靠性,TCP/IP协议中用到多种对数据的封装和加密来保证接收端收到正确的数据和丢弃错误的数据,而这些"可靠"的接口都是TCP/IP协议隐藏实现直接提供给User的。以往我们见到的...原创 2019-04-27 14:59:38 · 1589 阅读 · 0 评论 -
网络编程域名解析函数gethostbyname()的使用
我们通常在网页上访问一个网址,例如访问百度时,我们通常是输入www.baidu.com,这种表示是代表百度的域名,实际上当我们在访问这个网址的时候,操作系统会自动向DNS服务器发送请求,来获取百度的ip,完成域名到ip的转换。在计算机网络中,通常我们我们在访问一个网址时,输入的是该网址的域名,而不是ip,因为像百度这种网址的ip通常是公有ip,这种ip是会变的,我们当然不会去记它会变的i...原创 2018-11-18 16:27:42 · 2089 阅读 · 0 评论 -
Linux下学习用C语言实现MQTT(三)(异步函数)
客户端库支持两种操作模式,称为同步模式和异步模式。如果你的应用程序调用了MQTTClient_setCallbacks(),则客户端将会进入异步模式,否则会以同步模式运行。同步模式下,客户端应用程序运行在单个线程上。信息的发布使用MQTTClient_publish()和MQTTClient_publishMessage()函数。为了确定Qos1和Qos2(详见Quality of servic...原创 2019-03-13 21:11:35 · 5969 阅读 · 5 评论 -
MQTT代理服务器--mosquitto的搭建
Mosquitto是一个实现了MQTT3.1协议的代理服务器,由MQTT协议创始人之一的Andy Stanford-Clark开发,它为我们提供了非常棒的轻量级数据交换的解决方案。本文的主旨在于记录Mosquitto服务的安装和使用,以备日后查阅。Linux下安装mosquitto(本文使用操作系统Ubuntu14.04)下载地址(非最新版本):wget http://mosquitto.o...原创 2019-03-12 17:00:23 · 966 阅读 · 0 评论 -
Linux下学习用C语言实现MQTT(四)(setCallback回调函数)
直接给出publish和subscribe端代码:#include &amp;amp;lt;stdio.h&amp;amp;gt;#include &amp;amp;lt;stdlib.h&amp;amp;gt;#include &amp;amp;lt;string.h&amp;amp;gt;#include &amp;quot;MQTTClient.h&amp;q原创 2019-03-16 13:36:52 · 4516 阅读 · 4 评论 -
Linux下学习用C语言实现MQTT(五)(setCallback回调函数用于多线程)
在MQTT中设置回调函数常用于多线程,示例代码:#include <pthread.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include "MQTTClient.h"#if !defined(WIN32)#include <unistd.h>转载 2019-03-16 13:57:13 · 2448 阅读 · 1 评论 -
Linux下学习用C语言实现MQTT(一)(同步函数)
使用系统版本Ubuntu14.04先介绍一下MQTT:MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分。该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器和制动器(比如通过Twitter让房屋联网)的通信协议。MQTT协议是为大量计算能力有限,且工作在低带...原创 2019-03-12 23:38:56 · 12821 阅读 · 25 评论 -
Linux下学习用C语言实现MQTT(二)(常用函数介绍)
介绍一下常用的MQTT的C函数。MQTT系列函数有很多,在paho-mqtt.c库中的src路径下有大量函数的定义和声明,这里只介绍比较常用的函数解耦提和结构体:1.结构体MQTTClient定义:typedef void* MQTTClient;含义:代表MQTT客户端的句柄,成功调用MQTTClient_create函数后会得到有效的客户端句柄。(这里可以做一个对比,我并不是很了解这种...原创 2019-03-13 17:19:39 · 5125 阅读 · 2 评论 -
树莓派的ssh远程登录和树莓派配置无线路由器
电脑远程登陆树莓派1.首先使用电脑远程登陆树莓派,树莓派相当于一个微型电脑,目前电脑所拥有的基本功能树莓派基本上都有。想要远程登陆树莓派,必须电脑与树莓派处于同一无线局域网。对树莓派进行设置,首先对树莓派sd卡进行格式化并载入操作系统镜像文件。树莓派操作系统镜像下载地址:https://www.raspberrypi.org/downloads/raspbian/从下面地址中下载并安装 ...原创 2018-10-08 13:16:54 · 5173 阅读 · 0 评论