网络编程
文章平均质量分 72
记录 Linux 环境下,网络编程的一些知识
leon.liao
这个作者很懒,什么都没留下…
展开
-
goahead - 文件上传
说明文件上传是http服务器的基本功能,goahead当然也支持,但是其设计的使用场景为嵌入式平台,需要节约硬件资源,goahead的实现和其它服务器有些不一样。异常在研究代码之前,先搭建环境测试下文件上传功能,测试时会发现上传成功但是上传的文件不存在。代码解析文件上传相关代码大部分在upload.c中,代码流程如下:解析request头,判断是否upload。* 文件:http.c,函数:parseHeaders ....} else if (strcmp(key, "c原创 2020-10-30 11:09:12 · 1698 阅读 · 0 评论 -
goahead - 导入项目
说明在项目中采用goahead作为Http服务器,为远程客户端提供访问接口和资源(网页,图片等),往往需要自定义很多接口和处理。自定义接口,简单点可以使用CGI协议(大部分公司采用的),但是由于CGI程序的性能问题以及CGI程序与主程序进程通信的不便,我们需要其它方式,例如:内存CGI,嵌入到主进程等。goahead扩展性设计初,goahead就充分考虑了扩展性和可嵌入性,内存CGI等机制就体现了这一点,查看编译脚本可发现核心源码最终编译成了一个库(libgo.so),主程序goahead也是原创 2020-11-10 19:48:35 · 802 阅读 · 0 评论 -
嵌入式设备APP访问方式
说明一些嵌入式产品,例如:路由器,安防摄像头等,没有屏幕,但是需要显示一些信息和提供一些设置功能给用户。常见的做法有:采用网页或者手机客户端的形式;网页形式设备中需要集成一个小型web服务器和一个简单网站,在同一个局域网内用户可以通过PC或者其它设备访问该网站,相对其它方式,该方式虽然使用上稍微麻烦点但是更节省成本。经验教训:不要尝试自定义协议,http协议已经是很成熟和很强大的协议,几乎能满足产品所有的需求。设备端网站实现方式由于资源受限,嵌入式领域软件技术相对滞后,使用到的库、框架等技术原创 2020-10-21 21:42:08 · 682 阅读 · 0 评论 -
goahead - 环境准备和基本使用
说明采用第三方开源库实现嵌入式web服务器,goahead是个不错的选择,它支持内存CGI并且可以很方便的嵌入到自己的程序中。简介GoAhead是一个开源,免费,功能强大,可以在多个平台运行的嵌入式WebServer,主要特性有:支持ASP嵌入式的javascript标准的CGI执行内存中的CGI处理GoFroms扩展的API快速响应,每秒可处理超过50个请求完全和标准兼容如果不包含SSL,仅要求60K的内存;包含SSL,要求500K内存web页面可以存在ROM或文件系统中原创 2020-10-23 21:16:41 · 3419 阅读 · 0 评论 -
Http协议 - 用户认证
简介用户认证即用户身份验证,直白点说就是识别http请求者是谁。目的HTTP最初是一个匿名,无状态的请求/响应协议,服务器处理来自客户端的请求,然后向客户端回送一条响应。随着行业的发展,人们意识到访问的安全性,服务器的一部分受保护的资源无法开放给普通用户,因此需要一种机制来识别用户。用户认证的初始需求是控制受保护资源的访问,如今已扩展出许多其它功能,例如:大数据杀熟等。认证方式质询/响应方式(challenge/response)质询/响应方式是HTTP提供了一套标准的身份验证框架原创 2020-10-29 15:32:59 · 920 阅读 · 1 评论 -
Http协议 - Restful API 理解
说明相关词汇:Rest,Restful,Restful API。Rest:Representational State Transfer,中文直译:表现层状态转移;是Roy Fielding博士在2000年他的博士论文中提出的一种Web API定义风格,是前后端分离Web API定义的一套标准一套规范,不是框架或者其它东西。Restful:英语中形容词加上full类似于helpful,表示完全按照Rest风格定义。Restful API:完全按照Rest风格定义的API。由来前后端分离早原创 2020-07-28 09:40:49 · 211 阅读 · 0 评论 -
Http协议 - 状态维持 - cookie,session,token
说明web程序是通过HTTP协议与服务器通讯,而HTTP协议本身是无状态的协议,如果没有其它辅助机制,服务器无法唯一标识HTTP请求,对于请求处理结果没有记忆能力,无法保存历史请求处理信息,一些需要持续保存一些状态的需求将无法实现,例如:用户登录功能,如果无法保存登录状态,意味着后续每次请求都需要重新登录一次,而不是只需要判断一下是否已登录,因此需要一些辅助机制来实现web程序的状态维持工作。cookie,session,token是常用的状态维持机制。cookie状态维持最简单的方式就是数据原创 2021-03-24 12:32:43 · 338 阅读 · 0 评论 -
网络编程 - 阻塞和非阻塞
说明网络编程中有两种模式:阻塞和非阻塞,默认是采用阻塞方式。什么是阻塞和非阻塞阻塞和非阻塞是对操作请求者在等待返回结果时的状态描述,阻塞时,在操作请求结果返回前,当前线程会被挂起,得到结果之后返回;非阻塞时,如果不能立刻得到结果,请求者不会挂起当前线程,而是直接返回错误信息,因此对应非阻塞的情况,调用者需要定时轮询查看处理状态。本质:阻塞和非阻塞本质上是本地系统对socket的不同处理方式,并不影响socket链接,也不会影响通信对方,通信双方可以自由选择阻塞还是非阻塞,例如:客户端设置成阻塞原创 2020-12-25 20:41:35 · 3246 阅读 · 0 评论 -
FTP 探究
说明事由:公司IPC产品需要支持FTP上传人脸抓拍图功能。FTP功能是C/S模型,由FTP服务器以FTP协议提供上传服务。环境搭建调试过程中需要自己搭建服务器来验证功能。服务器安装由于FTP协议出现已经非常久了,网络上可以找到的FTP服务器非常多,但是最好使用较为闻名的服务器,性能和稳定性更有保障,此次调试过程中就出现,测试使用不知名的服务器,导致长时间循环上传图片出现丢图片,上传中断的问题,浪费宝贵的验证时间。常见的服务器:windows上的FileZilla Server,Lin原创 2020-08-14 19:22:38 · 159 阅读 · 0 评论 -
应用层心跳机制
疑问应用层心跳机制是否有必要?解答对了这个问题,很早看别人的博客介绍是必须的,但是对于解释似懂非懂,当别人问我时也是解释不清楚,直到有一天我解决了一个问题。问题描述写测试程序时,实现了一个TCP客户端去连接服务器,客户端连接和发送数据都是成功的,没有返回任何错误,但是服务器端却没有接收到任何事件,甚至accept也没任何反应。问题分析最后问题定位于:服务器在某个处理阻塞...原创 2020-03-06 19:19:00 · 537 阅读 · 0 评论 -
UDP 不可靠性
说明UDP 是不可靠协议,使用UDP需要注意一些问题。丢包UDP丢包可能性有两种:传输过程中接收设备缓存传输过程丢包传输过程丢包一般出现在广域网的情况下,由于路由路径,网线和路由器等处理硬件,以及网络情况等各种原因都有可能导致丢包;局域网内一般不容易出现(特殊原因:网络情况差有大量数据要发送,路由器和网线硬件问题)。局域网内使用网线传输一般不会出现丢包,wifi等弱网...原创 2020-02-14 12:05:57 · 1412 阅读 · 0 评论 -
udp编程 bind,connect函数的使用
问题udp是一个基于无连接的通讯协议,基本的通讯模型如下:如基本模型所示,udp编程中几乎不怎么使用到bind和 connect函数,这两个函数在udp编程中起怎么样的作用?实际上以上基本模式是通用模型,在一些情况下性能不是最好,在特殊情况下可以采用bind,connect函数来提高程序性能。bind函数使用bind函数作用为套接字绑定本地地址和端口号。服务器调用bind函数的作...原创 2020-02-14 11:34:25 · 2039 阅读 · 0 评论