![](https://img-blog.csdnimg.cn/20190902134728115.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
网络编程
文章平均质量分 72
网络编程
小哈龙
一颗勇往直前的心
展开
-
SignalR-Client-CPP 源码编译
源码及环境编译环境:Windows 10 VS2015GitHub地址:https://github.com/SignalR/SignalR-Client-CppCmake编译生成VS工程cmake版本:3.19.0所需的CMakeLists.txt在源码中已经存在,直接使用即可,源码目录结构如下图:cmake工具的使用此处省略(基本使用规则)。使用Camke工具配置时,可能会出现一些可忽略的错误,此时可以先跳过,直接Generate,生成VS工程。...原创 2021-03-05 14:17:39 · 608 阅读 · 0 评论 -
开源SignalR-Client-CPP使用总结
一、使用背景 在使用C++对接项目平台过程中需要使用SignalRClient接收平台的事件信息。C++版本的SignalRClient使用不是很多,国内网站也没什么资料可供参考。经过调研,项目中决定使用SignalR-Client-CPP开源代码(https://github.com/SignalR/SignalR-Client-Cpp)。二、SignalR简介 ASP .NET SignalR 是一个ASP .NET 下的类库,可以在ASP .NET 的Web项目中实现实时通信。什么是实转载 2021-03-05 09:12:00 · 1615 阅读 · 1 评论 -
libevent和libcurl实现http和https服务器 cJSON使用
前言 libevent和libcurl都是功能强大的开源库;libevent主要实现服务器,包含了select、epoll等高并发的实现;libcurl实现了curl命令的API封装,主要作为客户端。这两个开源库的安装可以参考我的这篇博客:https://www.cnblogs.com/liudw-0215/p/9917422.html,并且我的代码都提交在了我的github上了,可以点左上角图标,跳转到github,仓库是libcurl。 一、curl的两种使用方法 1、命令行模式转载 2020-11-19 16:06:03 · 1727 阅读 · 0 评论 -
curl和libcurl的区别简介
curl和libcurl的区别简介更新时间:2015年07月01日 15:39:19 投稿:junjie 这篇文章主要介绍了curl和libcurl的区别简介,本文讲解了curl简介、libcurl简介、curl与libcurl对比、“curl”的不同意思、PHP中使用curl和libcurl等内容,这么多的curl,搞都搞不懂,看了本文才知道,我们一直用的其实是libcurl,需要的朋友可以参考下curl简介curl是利用URL语法在命令行方式下工作的开源文件传输工具。它支持很多...转载 2020-11-19 15:55:13 · 2167 阅读 · 0 评论 -
JSON.parse与eval
JSON.parse与eval和能将一个字符串解析成一个JSON对象,但还是有挺大区别。测试代码var A = "{ a: 1 , b : 'hello' }";var B = "{ 'a': 1 , 'b' : 'hello' }";var C = "{'a':1,'b':'hello'}";var D = '{"a":1,"b":"hello"}';var E = '{ ...转载 2020-04-25 20:32:10 · 816 阅读 · 0 评论 -
epoll讲解
首先我们来定义流的概念,一个流可以是文件,socket,pipe等等可以进行I/O操作的内核对象。 不管是文件,还是套接字,还是管道,我们都可以把他们看作流。 之后我们来讨论I/O的操作,通过read,我们可以从流中读入数据;通过write,我们可以往流写入数据。现在假定一个情形,我们需要从流中读数据,但是流中还没有数据,(典型的例子为,客户端要从socket读如数...转载 2020-04-25 17:27:19 · 224 阅读 · 0 评论 -
epoll原理详解及epoll反应堆模型
文章目录一、epoll原理详解二、epoll的两种触发模式三、epoll反应堆模型 设想一个场景:有100万用户同时与一个进程保持着TCP连接,而每一时刻只有几十个或几百个TCP连接是活跃的(接收TCP包),也就是说在每一时刻进程只需要处理这100万连接中的一小部分连接。那么,如何才能高效的处理这种场景呢?进程是否在每次询问操作系统收集有事件发生的TCP连接时,把这100万个连接告诉操作...转载 2020-04-25 17:24:09 · 308 阅读 · 0 评论 -
select函数及fd_set介绍
select函数及fd_set介绍1. select函数1. 用途 在编程的过程中,经常会遇到许多阻塞的函数,好像read和网络编程时使用的recv, recvfrom函数都是阻塞的函数,当函数不能成功执行的时候,程序就会一直阻塞在这里,无法执行下面的代码。这时就需要用到非阻塞的编程方式,使用select函数就可以实现非阻塞编程。 select函数是一个轮循函...转载 2020-04-25 17:09:26 · 692 阅读 · 0 评论 -
C++ socket编程select模型
在做Socket编程时,当要处理一个server对应多个client,这种可以每个客户端用一个线程来处理,但是客户端太多,程序的性能会降低。Windows提供了select模型,很好的处理了一对多的模型。select的申明如下:Int WSAAPI select(_In_ int nfds, //0,无意义_Inout_opt_ fd_set FAR * readfds, //检查...转载 2020-04-25 17:00:46 · 1745 阅读 · 1 评论 -
报文、报文段、分组、包、数据报、帧、数据流的概念区别
1.报文(message)我们将位于应用层的信息分组称为报文。报文是网络中交换与传输的数据单元,也是网络传输的单元。报文包含了将要发送的完整的数据信息,其长短不需一致。报文在传输过程中会不断地封装成分组、包、帧来传输,封装的方式就是添加一些控制信息组成的首部,那些就是报文头。2.报文段(segment)通常是指起始点和目的地都是传输层的信息单元。3.分组/包(packet)分组是在...转载 2019-10-16 16:06:49 · 3089 阅读 · 0 评论 -
实例说明listen()函数第二个参数的意义与用法
关于listen函数问题,在网上查阅了部分资料,如下资料对自己理解很有帮助我们先来看结果:Client:#include <sys/socket.h>#include <stdio.h>#include <string.h>#include <netinet/in.h>#include <stdlib.h>#...转载 2019-10-16 15:34:08 · 793 阅读 · 0 评论 -
TCP、UDP、HTTP、SOCKET、WebSocket之间的区别
本文对自己学习理解很有帮助,感谢原作者分享!推荐阅读:TCP为什么是三次握手,为什么不是两次或者四次 && TCP四次挥手TCP的几个状态 (SYN, FIN, ACK, PSH, RST, URG)TCP/IP协议栈主要分为四层:应用层、传输层、网络层、数据链路层,每层都有相应的协议,如下图IP:网络层协议;(高速公路)TCP和UDP:传输层协议;(...转载 2019-10-09 15:29:17 · 157 阅读 · 0 评论 -
C4996: 'inet_addr': Use inet_pton() or InetPton() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS
错误:C4996: 'inet_addr': Use inet_pton() or InetPton() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings在vs2017 下socket编程时会出现如题的错误,错误的原因在于从VS2013版本以上开始支持新的函数,使用旧的函数会...原创 2019-10-09 11:05:36 · 22366 阅读 · 1 评论 -
在socket中使用域名
下文对计算机socket编程的讲解通俗易懂,对我自己回顾以前的知识,以及学习很有帮助,感谢原作的分享!在此转载。原文地址:http://c.biancheng.net/cpp/html/3048.html客户端中直接使用IP地址会有很大的弊端,一旦IP地址变化(IP地址会经常变动),客户端软件就会出现错误。而使用域名会方便很多,注册后的域名只要每年续费就永远属于自己的,更换IP地址时修改...转载 2019-09-25 10:52:08 · 868 阅读 · 0 评论 -
socket网络字节序以及大端序小端序
下文对计算机socket编程的讲解通俗易懂,对我自己回顾以前的知识,以及学习很有帮助,感谢原作的分享!在此转载。原文地址:http://c.biancheng.net/cpp/html/3047.html不同CPU中,4字节整数1在内存空间的存储方式是不同的。4字节整数1可用2进制表示如下:00000000 00000000 00000000 00000001有些CPU以上面的顺序...转载 2019-09-25 10:49:10 · 759 阅读 · 0 评论 -
socket文件传输功能的实现
下文对计算机socket编程的讲解通俗易懂,对我自己回顾以前的知识,以及学习很有帮助,感谢原作的分享!在此转载。原文地址:http://c.biancheng.net/cpp/html/3045.html这节我们来完成 socket 文件传输程序,这是一个非常实用的例子。要实现的功能为:client 从 server 下载一个文件并保存到本地。编写这个程序需要注意两个问题:1) 文件大...转载 2019-09-25 10:47:12 · 216 阅读 · 0 评论 -
优雅的断开连接--shutdown()
下文对计算机socket编程的讲解通俗易懂,对我自己回顾以前的知识,以及学习很有帮助,感谢原作的分享!在此转载。原文地址:http://c.biancheng.net/cpp/html/3044.html调用 close()/closesocket() 函数意味着完全断开连接,即不能发送数据也不能接收数据,这种“生硬”的方式有时候会显得不太“优雅”。图1:close()/closes...转载 2019-09-25 10:46:32 · 188 阅读 · 0 评论 -
socket简介
下文对计算机socket编程的讲解通俗易懂,对我自己回顾以前的知识,以及学习很有帮助,感谢原作的分享!在此转载。原文地址:http://c.biancheng.net/cpp/html/3029.html在计算机通信领域,socket 被翻译为“套接字”,它是计算机之间进行通信的一种约定或一种方式。通过 socket 这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机发送数据...转载 2019-09-23 18:09:19 · 513 阅读 · 0 评论 -
Linux socket程序演示
下文对计算机socket编程的讲解通俗易懂,对我自己回顾以前的知识,以及学习很有帮助,感谢原作的分享!在此转载。原文地址:http://c.biancheng.net/cpp/html/3030.html和C语言教程一样,我们从一个简单的“Hello World!”程序切入 socket 编程。本节演示了 Linux 下的代码,server.cpp 是服务器端代码,client.cpp ...转载 2019-09-23 18:15:18 · 175 阅读 · 0 评论 -
Windows socket程序演示
下文对计算机socket编程的讲解通俗易懂,对我自己回顾以前的知识,以及学习很有帮助,感谢原作的分享!在此转载。原文地址:http://c.biancheng.net/cpp/html/3031.html上节演示了 Linux 下的 socket 程序,这节来看一下 Windows 下的 socket 程序。同样,server.cpp 为服务器端代码,client 为客户端代码。服务器端...转载 2019-09-23 18:19:07 · 179 阅读 · 0 评论 -
WSAStartup()函数以及DLL的加载
本节讲解 Windows 下 DLL 的加载,学习 Linux Socket 的读者可以跳过。WinSock(Windows Socket)编程依赖于系统提供的动态链接库(DLL),有两个版本:较早的DLL是wsock32.dll,大小为 28KB,对应的头文件为 winsock1.h; 最新的DLL是ws2_32.dll,大小为 69KB,对应的头文件为winsock2.h。...转载 2019-09-23 18:21:57 · 490 阅读 · 0 评论 -
使用socket()函数创建套接字
下文对计算机socket编程的讲解通俗易懂,对我自己回顾以前的知识,以及学习很有帮助,感谢原作的分享!在此转载。原文地址:http://c.biancheng.net/cpp/html/3032.html在Linux中,一切都是文件,除了文本文件、源文件、二进制文件等,一个硬件设备也可以被映射为一个虚拟的文件,称为设备文件。例如,stdin 称为标准输入文件,它对应的硬件设备一般是键盘,s...转载 2019-09-23 18:25:44 · 227 阅读 · 0 评论 -
使用bind()和connect()函数
下文对计算机socket编程的讲解通俗易懂,对我自己回顾以前的知识,以及学习很有帮助,感谢原作的分享!在此转载。原文地址:http://c.biancheng.net/cpp/html/3033.htmlsocket() 函数用来创建套接字,确定套接字的各种属性,然后服务器端要用 bind() 函数将套接字与特定的IP地址和端口绑定起来,只有这样,流经该IP地址和端口的数据才能交给套接字处...转载 2019-09-23 18:36:31 · 803 阅读 · 0 评论 -
使用listen()和accept()函数
下文对计算机socket编程的讲解通俗易懂,对我自己回顾以前的知识,以及学习很有帮助,感谢原作的分享!在此转载。原文地址:http://c.biancheng.net/cpp/html/3036.html对于服务器端程序,使用 bind() 绑定套接字后,还需要使用 listen() 函数让套接字进入被动监听状态,再调用 accept() 函数,就可以随时响应客户端的请求了。liste...转载 2019-09-24 18:33:32 · 1403 阅读 · 0 评论 -
socket数据的发送和接收
下文对计算机socket编程的讲解通俗易懂,对我自己回顾以前的知识,以及学习很有帮助,感谢原作的分享!在此转载。原文地址:http://c.biancheng.net/cpp/html/3037.html在 Linux 和 Windows 平台下,使用不同的函数发送和接收 socket 数据,下面我们分别讲解。Linux下数据的接收和发送Linux 不区分套接字文件和普通文件,使用...转载 2019-09-24 18:36:28 · 4039 阅读 · 0 评论 -
回声客户端的实现
下文对计算机socket编程的讲解通俗易懂,对我自己回顾以前的知识,以及学习很有帮助,感谢原作的分享!在此转载。原文地址:http://c.biancheng.net/cpp/html/3038.html所谓“回声”,是指客户端向服务器发送一条数据,服务器再将数据原样返回给客户端,就像声音一样,遇到障碍物会被“反弹回来”。对!客户端也可以使用 write() / send() 函数向服务...转载 2019-09-24 18:54:38 · 179 阅读 · 0 评论 -
实现迭代服务器端和客户端
下文对计算机socket编程的讲解通俗易懂,对我自己回顾以前的知识,以及学习很有帮助,感谢原作的分享!在此转载。原文地址:http://c.biancheng.net/cpp/html/3039.html前面的程序,不管服务器端还是客户端,都有一个问题,就是处理完一个请求立即退出了,没有太大的实际意义。能不能像Web服务器那样一直接受客户端的请求呢?能,使用 while 循环即可。修改前...转载 2019-09-25 10:37:14 · 123 阅读 · 0 评论 -
socket缓冲区以及阻塞模式
下文对计算机socket编程的讲解通俗易懂,对我自己回顾以前的知识,以及学习很有帮助,感谢原作的分享!在此转载。原文地址:http://c.biancheng.net/cpp/html/3040.html在《socket数据的接收和发送》一节中讲到,可以使用 write()/send() 函数发送数据,使用 read()/recv() 函数接收数据,本节就来看看数据是如何传递的。...转载 2019-09-25 10:39:03 · 217 阅读 · 0 评论 -
TCP的粘包问题以及数据的无边界性
下文对计算机socket编程的讲解通俗易懂,对我自己回顾以前的知识,以及学习很有帮助,感谢原作的分享!在此转载。原文地址:http://c.biancheng.net/cpp/html/3041.html上节我们讲到了socket缓冲区和数据的传递过程,可以看到数据的接收和发送是无关的,read()/recv() 函数不管数据发送了多少次,都会尽可能多的接收数据。也就是说,read()/r...转载 2019-09-25 10:41:04 · 312 阅读 · 0 评论 -
TCP数据报结构以及三次握手(图解)
下文对计算机socket编程的讲解通俗易懂,对我自己回顾以前的知识,以及学习很有帮助,感谢原作的分享!在此转载。原文地址:http://c.biancheng.net/cpp/html/3042.htmlTCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的通信协议,数据在传输前要建立连接,传输完毕后还要断开连接。客户端在...转载 2019-09-25 10:42:44 · 180 阅读 · 0 评论 -
TCP数据的传输过程
下文对计算机socket编程的讲解通俗易懂,对我自己回顾以前的知识,以及学习很有帮助,感谢原作的分享!在此转载。原文地址:http://c.biancheng.net/cpp/html/3046.html建立连接后,两台主机就可以相互传输数据了。如下图所示:图1:TCP 套接字的数据交换过程上图给出了主机A分2次(分2个数据包)向主机B传递200字节的过程。首先,主机A通过1个...转载 2019-09-25 10:43:56 · 189 阅读 · 0 评论 -
TCP四次握手断开连接(图解)
下文对计算机socket编程的讲解通俗易懂,对我自己回顾以前的知识,以及学习很有帮助,感谢原作的分享!在此转载。原文地址:http://c.biancheng.net/cpp/html/3043.html建立连接非常重要,它是数据正确传输的前提;断开连接同样重要,它让计算机释放不再使用的资源。如果连接不能正常断开,不仅会造成数据传输错误,还会导致套接字不能关闭,持续占用资源,如果并发量高,...转载 2019-09-25 10:45:12 · 1919 阅读 · 0 评论 -
BS架构和CS架构的优缺点
在网上看到一篇介绍BS与CS的优缺点总结,对自己很有帮助,原文如下:1、CS、BS架构定义 CS(Client/Server):客户端----服务器结构。C/S结构在技术上很成熟,它的主要特点是交互性强、具有安全的存取模式、网络通信量低、响应速度快、利于处理大量数据。因为客户端要负责绝大多数的业务逻辑和UI展示,又称为胖客户端。它充分利用两端硬件,将任务分配到Client 和Serv...转载 2019-08-28 14:21:19 · 1139 阅读 · 0 评论