网络
lzs_blog
嵌入式
展开
-
48.Linux网络编程--Unix 域套接字
一.Unix域套接字的产生原因及特性1.产生原因:在之前的学习中我们学习了网络套接字,实现了不同主机间的进程通讯,同时为了保证数据传输的可靠性,网络套接字中增加了许多校验,应答,序列号等机制,但是假如我们想要实现本机两个进程间通讯的话,使用同样的方法行不行??当然行,但是大材小用了,本来本地进程间通讯就比较可靠,不用这么麻烦,为了提高效率,出现了Unix域套接字。2.特性UNIX域套接字用于在同一台计算机上运行的进程之间的通信。 UNIX域套接字提供流和数据报两种接口。UNIX域数据报服.原创 2020-05-13 14:51:05 · 925 阅读 · 0 评论 -
47.Linux网络编程-- 广播,组播
一 .广播编程1.前面介绍的数据包发送方式只有一个接受方,称为单播2.如果同时发给局域网中的所有主机,称为广播3.只有用户数据报(使用UDP协议)套接字才能广播4.广播地址以192.168.1.0 (255.255.255.0) 网段为例,最大的主机地址192.168.1.255代表该网段的广播地址发到该地址的数据包被所有的主机接收255.255.255.255在所有网段中都代表广播地址5.广播的发送:6.广播的接收实例:udp 客户端#inclu.原创 2020-05-13 11:10:10 · 539 阅读 · 0 评论 -
46.Linux网络编程--网络超时优化
一.超时引用必要性在网络通信中,很多操作会使得进程阻塞例如TCP套接字中的recv/accept/connectUDP套接字中的recvfrom你也不能一直阻塞着不干活啊,避免进程在没有数据时无限制地阻塞,所以引入超时检测。当设定的时间到时,进程从原操作返回继续运行。二.设置超时的三种方法:1.设置socket的属性 SO_RCVTIMEO,我们上面讲的改属性例:设置接收超时:struct timeval tout;tout.tv_sec = 5;t...原创 2020-05-13 09:58:25 · 370 阅读 · 0 评论 -
45.Linux编程---网络属性设置
一. 网络属性设置在前几节的编程中通过ctrl+C退出服务器端后,原本好用的代码再次执行的时候,却连接不上了,大约经过几分钟之后又能重新连接,后来添加了以下代码后,问题就解决了。int b_reuse =1;setsockopt(fd,SOL_SOCKET,SO_REUSEADDR,&b_reuse,sizeof(int));那么这两句代码是什么意思呢??其实这个函数就是改变了套接字fd的属性。那么我们详细看一下这个函数。 函数名 int se原创 2020-05-13 09:49:27 · 239 阅读 · 0 评论 -
44.Linux网络编程--DNS域名解析
一.域名解析DNS域名解析,实现了主机域名地址到IP地址转换的过程。、比如我们访问百度 www.baidu.com主机向域名服务器请求服务,请求域名服务器解析www.baidu.com的IP地址;域名服务器接收到该请求后,在本地数据库中查找或者向其他域名服务器请求服务,以找到www.baidu.com对应的IP地址;域名服务器向主机返回解析出的IP地址;主机使用该IP地址与服务器建立连接,获取数据。解析过程如下图所示:概念了解了,详细的原理以后在深入研究,目前要考虑的是我们的编程中怎么应原创 2020-05-13 09:42:09 · 597 阅读 · 0 评论 -
43.Linux网络编程--TCP IP原理深入剖析
前几节我们说了一下我们TCP/IP的一些发展历史,分层及各层一些关键的协议的一个简单介绍,然后详细的进行了TCP,UDP的一个网络编程。想要进一步的深入理解,编程上更游刃有余的话,需要详细的分析一下TCP/IP协议的一些关键机制。一. wirshark 工具学习网络编程的人,必然会接触这个工具,毕竟网络协议栈太大,太复杂,不抓包分析一下,又怎么能理解的了其中的原理。wireshark是非常流行的网络封包分析软件,功能十分强大。可以截取各种网络封包,显示网络封包的详细信息。安装过程我们就不说.原创 2020-05-12 15:07:19 · 772 阅读 · 0 评论 -
42.Linux网络编程--IO多路复用(select poll epoll)
一. 预备知识1.Unix五种IO模型[1] blocking IO - 阻塞IO[2] nonblocking IO - 非阻塞IO[3] IO multiplexing - IO多路复用[4] signal driven IO - 信号驱动IO[5] asynchronous IO - 异步IO2.用户空间 / 内核空间操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限。为了保证用户进程不能直接操作内核(kernel),保证.原创 2020-05-10 00:54:42 · 1973 阅读 · 0 评论 -
41.Linux网络编程--UDP编程
我们完成了TCP编程的学习,我们知道TCP是可靠性传输,是面向连接的,而UDP是无连接尽力传输。直观上感觉,udp的编程肯定要比TCP简单。一.API的补充API函数补充1.send()/write() 主要用在TCP 函数名 ssize_t send(int socket, const void *buffer, size_t length, ...原创 2020-05-08 16:05:10 · 604 阅读 · 0 评论 -
40.Linux网络编程--TCP并发服务器
一.并发服务器模型常用的TCP服务器模型,我们上节写的是TCP循环服务器模型,这种模型很大的弊端就是没办法实现并发,在此基础上进行优化,就出现了多线程和多进程的服务器。他们的解决思路都是相同的,他们的数据处理都是单独在开一个线程或者进程进行处理。多线程和多进程的服务器模型是比较常见的,他们之间各具优势,需要根据不同应用场景进行选择。二.多线程并发实例客户端的实现和之前的...原创 2020-05-08 09:46:40 · 544 阅读 · 0 评论 -
39.Linux网络编程--TCP编程
一.编程流程TCP的一个编程过程是怎样的呢??这是作为客户端和服务器(CS模式)的一个编程过程,我们要对这些要用到的参数进行学习,包括需要传什么参数,返回值是什么等等。这些函数的逻辑实现我们不关注,只关注怎么用。二.编程需要的函数1. socket() 函数名 int socket(int domain,int type, int proto...原创 2020-05-07 10:38:31 · 471 阅读 · 0 评论 -
38.Linux网络编程--编程预备知识
在我们开始学习之前,一定要先学习的几个概念,这些概念我们在平时开发过程中经常听到,但是对他们不一定理解,那么我们开始学习他们一. socket1.socket是一个应用编程的接口,它是一种特殊的文件描述符(对它执行IO的操作函数,比如,read(),write(),close()等操作函数)socket代表着网络编程的一种资源2.socket的类型:流式套接字(SOCK_STR...原创 2020-04-30 11:46:17 · 376 阅读 · 0 评论 -
37.linux网络编程--网络基础
一.网络的历史提到网络我们就会知道说的是TCP/IP协议栈。它的由来我们只做了解即可。他们是冷战的产物,苏联在和美国互相秀肌肉的时候,美国提出了建立国防部高级研究计划署的一个机构,然后这个机构在1968年提出了“资源共享计算机网络”,其实就是想让他们的电脑互联,有点像搞个局域网的样子,这个网络叫“啊帊网”也就是互联网的雏形。但是此时的网络肯定有很多的问题。后来有两个大牛Robert...原创 2020-04-29 21:31:43 · 506 阅读 · 0 评论 -
深入学习lwip
引入: 物联网时代,我们的终端设备都需要连入互联网中,将终端各个节点的信息进行汇总,上传到云进行大数据分析,最终得到用户想要的信息。作为开发者的角度,设备连网后可以远程升级程序,远程调试等,大大降低了生产调试人的工作量。而我们的设备呢,接入网络比较常见的方式就是连接网线啊,或者内置wifi模块,或者接了GPRS的模块等。单片机的以太网方案,可参考以前的文章https://blo...原创 2020-04-15 19:43:57 · 2113 阅读 · 0 评论 -
stm32--以太网方案
一.当前市面上大部分串口转以太网模块方案1.传统的以太网接入方案:MCU+MAC+PHY,框图如下图(1)stm32(spi接口)+ENC28j60(2)stm32+DM9000等这种方案需要在主控芯片内植入TCP/IP协议栈代码实现通讯和上层应用,大多数使用轻量级TCP/IP协议栈(LWIP)来实现,但是还是比较耗费资源,超过40k的代码量,小容量的单片机尽量不要使用该方案。...原创 2019-09-28 17:21:26 · 16878 阅读 · 3 评论