现在位置: 首页 > 网络编程
1.sendfile用于两个fd之间零拷贝; 2.splice类似sendfile但是两个fd之中至少有一个是pipe; 3.tee类似splice但是两个fd都必须是管道,而且tee不消耗输入fd的数据; 4.另外还有些参数使用上的区别。
阅读全文
2020-03-13 07:32 工业·编程 ⁄ 共 561字 暂无评论
1)熟悉TCP/IP协议族的基本原理 IP地址的分类,定义,获得,大概的管理方法 TCP、UDP等主要协议的特点,主要格式,以及重要字段在协议交互中起到的作用。 2)对于简单的TCP/IP协议导致的问题,有基本的判断 熟悉网络问题的解决方法,一个问题,应该是由上而下(top-button),还是由下而上(button-top)来分析? 3)基本的编程知识。 在系统内,构建简单通信。 在系统间,构建简单的通信。 熟悉系统内的API,知道在什么时候,改...
阅读全文
2020-03-11 07:05 工业·编程 ⁄ 共 264字 暂无评论
首先看完tcp卷1,对基本概念有所了解; 然后看完卷2,熟悉freebsd实现的代码流程; 再能看完linux系统的tcp实现,以及ip路由层的实现,能说出收发包的关键流程,以及tcp状态机的变化流程,对常见的tcp问题定位有一个方向; 知道tcp涉及的rfc文档,有些厂商自己实现的tcp协议栈可能不太符合规范,通信起来偶尔会遇到一些奇怪的问题,争论起来最好是拿标准规范来说明; 熟悉常用的tcp工具,tcpdump,wireshark,tc,scapy等; 熟...
阅读全文
void *us_loop_ext(struct us_loop_t *loop) {     return loop + 1; } void *us_socket_ext(int ssl, struct us_socket_t *s) { #ifndef LIBUS_NO_SSL     if (ssl) {         return us_internal_ssl_socket_ext((struct us_internal_ssl_socket_t *) s);     } #endif       return s + 1; }   void *us_i...
阅读全文
uSockets主要数据结构: struct us_poll_t {     uv_poll_t uv_p;     LIBUS_SOCKET_DESCRIPTOR fd;//这个其实就是把平台摸平了的fd     unsigned char poll_type; };   /* Internal callback types are polls just like sockets */ struct us_internal_callback_t {     alignas(LIBUS_EXT_ALIGNMENT) struct us_poll_t p;     struct us...
阅读全文
  最近在学习websockets的库,cpp主要有三个,websocketpp/libwebsockets/uwebsockets.看了一下简单明了的就是uWebSockets了,但是这个代码写的确实有点抽象。。。不太像我的风格。websocketpp要boost,有点巨大,不想用,libwebsockets虽然是c的,但是它的samples写的太磋,不太想用。纠结来纠结去还是用uWebSockets了,网址:https://github.com/uNetworking/uWebSockets  uWebSockets依赖uSockets: https://github...
阅读全文
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; ...
阅读全文