现在位置: 首页 > 网络编程
2019-10-07 06:23 工业·编程 ⁄ 共 3046字 暂无评论
libcurl库是一个实现了各种客户端协议的网络编程库。目前它支持12种以上的协议,包括 FTP、HTTP、Telnet以及其他安全变体。 如果您有 10 年以上的脚本语言经验,您就会注意到它们的标记有很大的变化。Python、Ruby、Perl 等这些脚本语言不仅包含套接字层(C 或 C++ 中也有),还包含了应用层协议 API。这些脚本语言合并了高级功能,可以创建 HTTP 服务器或客户端。libcurl 库为 C 和 C++ 之类的语言添加了类似的功能,但是它可...
阅读全文
2019-09-05 17:55 工业·编程 ⁄ 共 419字 暂无评论
libwebsockets增加ssl支持很简单,只需要在创建服务器时增加必要的信息就可以了。 一般来说只需要增加以下几行即可     struct lws_context_creation_info info;     ...     /*证书的路径*/     info.ssl_cert_filepath = "xxx";     /*私钥的路径*/     info.ssl_private_key_filepath = "xxx&...
阅读全文
实现websocket服务器本身也是libwebsockets库的初衷,本篇博客将介绍如何利用libwebsockets库来实现一个简单的ws服务器。 1、添加websocket协议 这里创建服务器句柄的流程与http一致,需要修改的地方只有在创建服务器时传入的协议数组,即     struct lws_context_creation_info info;     struct lws_context *context;     static struct lws_protocols protocols[] = &...
阅读全文
根据官方的说明来看,从2.0版本起,http协议的服务器已经自动集成在库中,不需要我们自己去实现。下面介绍如何使用库去实现http服务器。 1、填充服务器创建需要的参数 lws_context_creation_info是创建服务器句柄时用来定制服务器信息的结构体,所以我们首先需要填充该结构体。该结构体的定义如下。 /*这里只列出我们常用的成员,注释很详细,不做过多解释*/ struct lws_context_creation_info {     int port; ...
阅读全文
2019-09-02 17:45 工业·编程 ⁄ 共 936字 暂无评论
libwebsockets是一款轻量级用来开发服务器和客户端的C库。按照官方(https://libwebsockets.org/)给出的介绍来看,它不仅支持ws,wss还同时支持http与https,可以轻轻松松结合openssl等库来实现ssl加密。OK,本文将介绍如何下载使用功能这么强大的库。 下载 git clone https://github.com/warmcat/libwebsockets.git 编译 为了可以进行多平台编译,websockets项目采用CMake作为编译工具,所以如果机器上没有CMake需要去安装CMa...
阅读全文
2019-09-01 17:13 工业·编程 ⁄ 共 3511字 暂无评论
Libevent、libev、libuv三个网络库,都是c语言实现的异步事件库 libevent :名气最大,应用最广泛,历史悠久的跨平台事件库; libev :较libevent而言,设计更简练,性能更好,但对Windows支持不够好; libuv :开发node的过程中需要一个跨平台的事件库,他们首选了libev,但又要支持Windows,故重新封装了一套,linux下用libev实现,Windows下用IOCP实现; Libuv 基础 libuv 采用了异步 (asynchronous), 事件驱动 (event-driven)...
阅读全文
2019-08-30 17:03 工业·编程 ⁄ 共 3213字 暂无评论
WebSocket 是 HTML5 的一个引入注目的特性,它通常用于 Web 端,为构建实时的 Web 应用提供方便。WebSocket 是一个基于 TCP 的协议,它借助于 HTTP 请求,建立客户端与服务器端之间的双向通道,通道建立完成后,客户端和服务器端都可以通过这条通道方便地收发消息,因而 WebSocket 一向有着 “Web 的 TCP” 之称。 WebSocket 不是 JavaScript 的一个接口,而是一个定义良好的基于消息的协议。得益于不同平台对于 WebSocket 协议的...
阅读全文
2019-07-27 06:40 工业·编程 ⁄ 共 1303字 暂无评论
sockaddr_in中的sin_family=PF_INET是什么意思?sin_family还有别的值吗?如果有都有什么?这些其他的值都是什么意思? 可以直接看定义所在的winsock.h,AF_INET是internet地址族,包括了tcp、udp什么的, IPX、pipe什么的就不用AF_INET这个值 PF_INET与AF_INET究竟有什么不同?实际上,原来的想法是每个通信域(如PF_INET)可能对应多个协议(如AF_INET),而事 实上支持多个协议的通信域一直没有实现。因此,在linux内核中,AF...
阅读全文
2019-07-25 22:56 工业·编程 ⁄ 共 1155字 暂无评论
1. 头文件 windows下winsock.h或winsock2.h linux下netinet/in.h(大部分都在这儿),unistd.h(close函数在这儿),sys/socket.h(在in.h里已经包含了,可以省了) 2. 初始化 windows下需要用WSAStartup启动Ws2_32.lib,并且要用#pragma comment(lib,"Ws2_32")来告知编译器链接该lib。 linux下不需要 3. 关闭socket windows下closesocket(...) linux下close(...) 4. 类型 windows下SOCKET linux下int(我喜欢用long...
阅读全文
2019-07-01 06:28 工业·编程 ⁄ 共 5116字 暂无评论
网络是用物理链路将各个孤立的工作站或主机相连在一起,组成数据链路,从而达到资源共享和通信的目的。 通信是人与人之间通过某种媒体进行的信息交流与传递。网络通信是通过网络将各个孤立的设备进行连接,通过信息交换实现人与人,人与计算机,计算机与计算机之间的通信。 网络通信中最重要的就是网络通信协议。当今网络协议有很多,局域网中最常用的有三个网络协议:MICROSOFT的NETBEUI、NOVELL的IPX/SPX和TCP/IP协议。应根据...
阅读全文