首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏用户2442861的专栏

    高性能网络编程5--IO复用与并发编程

    服务器的并发编程所追求的就是处理的并发连接数目无限大,同时维持着高效率使用CPU等资源,直至物理资源首先耗尽。 并发编程有很多种实现模型,最简单的就是与“线程”捆绑,1个线程处理1个连接的全部生命周期。优点:这个模型足够简单,它可以实现复杂的业务场景,同时,线程个数是可以远大于CPU个数的。 对高并发编程,目前只有一种模型,也是本质上唯一有效的玩法。 从这个系列的前4篇文章可知,连接上的消息处理,可以分为两个阶段:等待消息准备好、消息处理。 高并发编程方法当然就是把两个阶段分开处理。即,等待消息准备好的代码段,与处理消息的代码段是分离的。 但如果像我上面举例所说的,有时它不单纯是一个网络问题,跟应用场景相关。当然,大部分开源框架都是基于ET写的,框架嘛,它追求的是纯技术问题,当然力求尽善尽美。

    99810发布于 2018-09-20
  • 来自专栏小工匠聊架构

    高性能网络编程 - 解读5种IO模型

    4); 3)返回数据,服务器将已构建好的响应再通过内核空间的网络 I/O 发还给客户端(5-7)。 它通常用于网络编程中,特别是在UDP协议中。这个函数会阻塞应用程序的进程,直到有数据报准备好可以被接收。 EWOULDBLOCK 是一个错误码(或错误常量),通常在网络编程和非阻塞 I/O 中使用。它表示某个操作(通常是非阻塞的)因为当前状态而无法立即执行,但并不算是一种错误。 而在 Linux 系统下,Linux 2.6才引入,目前 AIO 并不完善,因此在 Linux 下实现高并发网络编程时都是以 IO 复用模型模式为主。 5 种 I/O 模型总结 从上图中我们可以看出,越往后,阻塞越少,理论上效率也是最优。

    92130编辑于 2023-11-11
  • 来自专栏changxin7

    3.网络编程 网络编程

    还有一些其他的地址家族,不过,他们要么是只用于某个平台,要么就是已经被废弃,或者是很少被使用,或者是根本没有实现,所有地址家族中,AF_INET是使用最广泛的一个,python支持很多种地址家族,但是由于我们只关心网络编程 TCP协议独立于 write()/send() 函数,数据有可能刚被写入缓冲区就发送到网络,也可能在缓冲区中不断积压,多次写入的数据被一次性发送到网络,这取决于当时的网络情况、当前线程是否空闲等诸多因素 与客户端建立连接, 拨号 # 1 制定file_info file_info = { 'file_path': r'D:\lnh.python\pyproject\PythonReview\网络编程 len(every_data) phone.send(every_data) phone.close() client端 FTP上传下载文件的代码(升级版)(注:咱们学完网络编程就留 网络编程的作业   好了同学们,到了这儿,我们的网络编程socket就讲完了,大致就是这些内容,给大家留个作业:(你的努力的成果你自己是看的到的~!)   

    3.1K21发布于 2019-08-20
  • 来自专栏分布式系统和大数据处理

    C#网络编程(接收文件) - Part.5

    C#网络编程(接收文件) - Part.5 2008-9-16 作者: 张子阳 分类: C# 语言 这篇文章将完成 Part.4 中剩余的部分,它们本来是一篇完整的文章,但是因为上一篇比较长,合并起来页数太多 ; // 创建获取文件发送状态的类 SendStatus status = new SendStatus(filePath); // 将文件流转写入网络流

    1.2K30发布于 2018-09-30
  • 来自专栏我的博客

    【Linux网络】Socket编程:TCP网络编程

    在前面的文章中,我们使用了UDP进行网络编程,这篇文章我们就来使用另一个TCP进行网络编程,我们知道UDP和TCP都是传输层协议,但是特点不同,前者无连接,不可靠传输,面向数据报,后者有连接,可靠传输 大体框架 1.1 补充 首先,在之前的UDP网络编程中,我们是直接使用的硬编码,例如退出码直接就设为1、2、3等,显然这并不是一个很好的选择,那么这里我们可以统一设计一个服务器的退出码,就像之前设计日志等级一样 (网卡)发来的连接我们都愿意接受,所以我们地址结构中的成员 sin_addr 需要设置为 INADDR_ANY,也就是IP地址此时为0,这在UDP网络编程时我们已经详细介绍了原因,这意味着我们服务端在使用 直接向目标服务器发起建立连接的请求 return 0; } 我们这里也不需要显式bind,关于原因我们在udp网络编程时已经说明了,那我们应该做什么呢? ,上层服务我们可以和UDP网络编程一样,直接在服务端主程序调用其他的服务,就比如之前实现的翻译和路由转发,然后在服务端接收数据时,将数据回调处理,最后将结果写回客户端。

    44210编辑于 2025-12-22
  • 来自专栏日常活动篇

    Qt5实战第八篇:Qt5 的网络编程

    Qt5 的网络编程模块提供了丰富的类和函数,使得开发者能够轻松地实现网络相关的功能。这些功能包括 HTTP 和 FTP 等高级网络操作,以及 TCP 和 UDP 等低级网络协议。 本文将详细介绍如何使用 Qt5 的网络编程功能,并通过示例展示如何进行网络请求和处理网络响应。一、Qt5 网络编程的基本概念Qt5 的网络模块提供了多种类,用于执行不同类型的网络操作。 二、使用 QNetworkAccessManager 进行网络请求QNetworkAccessManager 是 Qt5 中用于发起网络请求的类。 四、总结Qt5 的网络编程模块提供了强大的功能,使得开发者能够轻松地实现各种网络相关的功能。 通过这些示例,相信大家可以更加深入地理解 Qt5 的网络编程功能,并将其应用到自己的项目中。

    1.4K10编辑于 2025-01-01
  • 来自专栏Coding Diary

    Java网络编程 -- AIO异步网络编程

    AIO中的A即Asynchronous,AIO即异步IO。它是异步非阻塞的,客户端的I/O请求都是由OS先完成了再通知服务器应用去启动线程进行处理,一般我们的业务处理逻辑会变成一个回调函数,等待IO操作完成后,由系统自动触发。

    1.4K20发布于 2019-09-25
  • 来自专栏抠抠空间

    网络编程

    三.网络基础 网络基础 1.一个程序如何在网络上找到另一个程序? 首先,程序必须要启动,其次,必须有这台机器的地址,我们都知道我们人的地址大概就是国家\省\市\区\街道\楼\门牌号这样字。 那么每一台联网的机器在网络上也有自己的地址,它的地址是怎么表示的呢? 套接字有两种(或者称为有两个种族),分别是基于文件型的和基于网络型的。  还有一些其他的地址家族,不过,他们要么是只用于某个平台,要么就是已经被废弃,或者是很少被使用,或者是根本没有实现,所有地址家族中,AF_INET是使用最广泛的一个,python支持很多种地址家族,但是由于我们只关心网络编程 SOCK_DGRAM 是基于UDP的,无保障的面向消息的socket,多用于在网络上发广播信息。

    1.9K60发布于 2018-04-12
  • 来自专栏李才哥

    网络编程

    网络编程.png 网络编程 构建TCP 服务 创建 TCP 服务器 TCP全名为传输控制协议,在OSI模型(由七层组成,分别为物理层、数据链结层、网络层、 传输层、会话层、表示层、应用层)中属于传输层协议 Nagle算法 要求缓冲区的数据达到一定数量或者一定时间后才将其发出 构建UDP服务 UDP 在 UDP 中,一个套接字可以与多个 UDP 服务通信 UDP 又称用户数据包协议,与 TCP 一样同属于网络传输层 无须连接,资源消耗低,处理快速且灵活 若想让UDP套接字接收网络消息,只要调用dgram.bind(port, [address])方法对网卡和端口 进行绑定即可 UDP 是一个EventEmitter 客户端事件,response,socket,connect,upgrade,protocols,continue 构建 WebSocket 服务 WebSocket WebSocket客户端基于事件的编程模型与 SSL作为一种安全协议,它在传输层提供对网络连接加密的功能 Node在网络安全模块 crypto · 主要用于加 密解密,SHA1、MD5等加密算法都在其中有体现, tls · TLS/SSL是一个公钥

    1.1K20发布于 2021-03-02
  • 来自专栏Coding Diary

    Java网络编程--NIO非阻塞网络编程

    从Java1.4开始,为了替代Java IO和网络相关的API,提高程序的运行速度,Java提供了新的IO操作非阻塞的API即Java NIO。 java.nio.BufferOverflowException异常 byteBuffer.put((byte) 3); byteBuffer.put((byte) 4); byteBuffer.put((byte) 5) 实现单个线程可以管理多个通道,从而管理多个网络连接。 处理连接的逻辑 } if (key.isReadable()) { //处理读数据的逻辑 } iterator.remove(); } } NIO网络编程完整代码 Tomcat8中已经完全移除了BIO相关的网络处理代码,默认采用NIO进行网络处理。

    1.3K20发布于 2019-09-25
  • 来自专栏全志嵌入式那些事

    百问FB网络编程 - 网络编程简介

    6.1 网络编程简介 ​ 要编写通过计算机网络通信的程序,首先要确定这些程序同通信的协议(protocol),在设计一个协议的细节之前,首先要分清程序是由哪个程序发起以及响应何时产生。 ​ 6.1.1 五层因特网协议栈 ​ 为了给网络协议的设计提供一个结构,网络设计者以分层(layer)的方式组织协议以及实现这些协议的网络硬件和软件。 分层提供了一种结构化方式来讨论系统组件。 网络层:因特网呃网络层负责将称为数据包(datagram)的网络层分组从一台主机移动到另一台主机。 链路层:因特网的网络层通过源和目的地之间的一系列路由器路由数据报。 6.1.2 传输层和应用层的常见协议 ​ 我们重点介绍和应用层编程关系密切的应用层和运输层。 ​ 应用层: ​ 因特网的应用层包含很多协议,例如HTTP,SMTP,和 FTP。 6.2 网络编程之TCP/UDP比较 6.2.1 TCP和UDP 原理上的区别 ​ TCP向它的应用程序提供了面向连接的服务。

    45010编辑于 2024-12-05
  • 来自专栏南桥谈编程

    【Linux网络编程】网络基础 | Socket 编程基础

    TCP/IP 通讯协议采用了 5 层的层级结构, 每一层都呼叫它的下一层所提供的网络来完成自己的需求. 物理层: 负责光/电信号的传递方式. 之前我们在学习系统编程的时候知道访问公共资源就是临界资源,那么这里的局域网就是一个临界资源(以太网中, 任何时刻, 只允许一台机器向网络中发送数据)。 : IP 网络层存在的意义: 提供网络虚拟层, 让世界的所有网络都是 IP 网络, 屏蔽 最底层网络的差异 Socket 编程预备 理解源 IP 地址和目的 IP 地址 IP在网络中是用来标识主机的唯一性 sockadder结构 socket API 是一层抽象的网络编程接口,适用于各种底层网络协议,如 IPv4、 IPv6,以及 后面要讲的 UNIX Domain Socket. 关于Socket套接字编程后续文章会详细讲解。

    74710编辑于 2024-10-14
  • 来自专栏程序猿的大杂烩

    网络编程

    什么是网络: 现如今网络的普及性已经非常的高了,大部分人也都非常熟悉网络,基本上也是天天离不开网络,比如逛逛微信朋友,聊聊qq撩撩妹,上个淘宝剁个手什么的。 然后网络逐渐的发展至今,并且个人计算机的网络硬件都已经非常的小巧发达,在十年前网卡还只能是独立式的,那时候还可以利用电话线拨号上网,现在网卡基本都集成在电脑主板上了,一般现在用独立网卡的都是为了性能和网络的连接速度 以前的网络示意图: ? 现在的网络分为广域网、城域网、局域网,广域网就是国家骨干网,是最核心的网络。也是最先进的网络,连接着海底光缆,网络运营公司和一些国企是从骨干网里分享的网络。 城域网就是一些运营商架构在城镇之间的网络,能够在城镇范围互相连接。局域网则是个人庭或个人公司、超市等,通过路由器所形成的小型网络叫局域网。 示意图: ?   在操作系统中网络处理最好的系统是Unix和Linux操作系统,因为TCP/IP协议是固化在Linux内核里面的,网络处理性能要强于windows操作系统,所以服务器基本都是使用的Unix/Linux操作系统

    1.1K20发布于 2020-09-23
  • 来自专栏Java 学习日记

    网络编程

    1 网络概念 1.1 网络通信三要素 IP地址:唯一标识网络上的每一台计算机。 通信协议:通信的规则 TCP,UDP 1.2 网络通信模型 ? catch (UnknownHostException e) { 15 e.printStackTrace(); 16 } 17 } 18 } 3 TCP 编程 TCP编程中,如果要完成通信,通信双方必须要创建 socket,通过 socket 完成通信。 4 UDP 编程 UDP 编程中,如果要完成通信,通信双方必须要创建 DatagramSocket,通过 DatagramSo-cket 完成通信。

    96420发布于 2019-08-19
  • 来自专栏xiaozhangStu

    网络编程

    网络编程 什么是ip地址 互联网协议特有的一种地址 由4段8位的二进制组成的,因为读写不方便所一转换成了10进制,取值范围是1-255 输入域名---域名解析服务器(dns)解析域名成ip地址---访问 ip地址---根据绑定域名找到目录---达到访问目的地 什么是网络地址 标识计算机或者网络设备所在的网段 什么是主机地址 标识特定主机或者网络的设备 ip分类 分类 网络地址数量 主机地址数量 前8位的取值范围 作用 子网掩码 A 1 3 1-126 大量主机而局域网络数量较少的大型网络 255.0.0.0 B 2 2 128-191 国际性大公司和政府机构 255.255.0.0 C 3 1 192-223 ,比如网线 底层网络协议 数据链路层 物理网络上接受到的帧 底层网络协议 网络层 路由选择 ip 传输层 端口对端口 tcp可靠无差错的连接、数据安全 udp传输的快 应用层 应用服务元素(SASE)和一个或多个公用应用服务元素 (CASE) HTTP FTP Socket 简介 传输层进行端到端的通信 连接的端点就叫做socket(套接字)ip地址+端口号 基于TCP协议的Socket编程 用到的类 java.net包 Socket

    1.1K30编辑于 2023-05-04
  • 来自专栏Coding Diary

    Java网络编程--BIO阻塞式网络编程

    BIO网络编程 首先我们来看一段最基础的Java网络编程代码示例: 服务器端代码示例: public class BIOServerV1 { public static void main(String BIO网络编程处理浏览器请求 在了解了HTTP协议的内容之后我们就可以依据HTTP协议的内容编写程序来处理浏览器请求。 request.close(); } catch (IOException e) { e.printStackTrace(); } } }); } serverSocket.close(); } } 以上就是Java BIO网络编程的基本内容 ,对于BIO来说一个请求对应一个线程,上下文切换占用的资源很重,同时由于大量并发情况下,其他接入的消息,只能一直等待,而目前对于性能,响应速度等的却要求越老越高,BIO网络编程使用的已经越来越少。 使用的比较多的是Java NIO网络编程,该部分内容我们将在下一部分继续。

    1.4K30发布于 2019-09-25
  • 来自专栏逆向技术

    网络编程基础第二讲.网络编程框架

            网络编程基础第二讲.网络编程框架 一丶了解的知识   1.什么是socket      socket 是开发接口.是TCP/IP网络环境下.应用程序与驱动程序之间访问的接口.   2.服务跟类型 是在网络层进行编程的.也就是对底层的IP可以进行编程.不过常用的就是前边两种.   3.构建Windows框架.   4.IP地址的表现形式.   5.编写一个简单的网络程序. TCP模型. htonl() 将主机字节顺序格式的IP地址转化成为TCP/IP网络字节顺序   htons 主机转网络.    ntohl 网络转主机   ntohs 网络转主机. h 主机的意思 to 转化的意思 n 网络的意思 network l 就是 ulong 所以根据缩写就能明白什么意思. int nLen = sizeof(addrClient); hClient = accept(hServer, (sockaddr *)&addrClient, &nLen); //5.

    90020发布于 2019-05-25
  • 来自专栏开源技术小栈

    「网络编程」深入浅出Socket网络编程

    Socket编程 网络编程又可称为Socket编程。编程分为基于Server端开发与基于Client端开发两部分。 基于Server端的编程由四大步骤组成,开发者首先创建Socket,利用bind与listen函数绑定监听地址及相应的端口,最后使用accept函数接受来自监听端的请求。 下图所示为Socket编程的实现代码 在Socket编程中,Socket的读写状态判断十分重要。Socket可读条件分为以下四条: 该套接字接收缓冲区中的数据字节数大于等于套接字接收缓存区低水位。 下图举了生活中与网络阻塞类似的生活事例来展示该过程。 在用户到手机店修手机的过程中,用户在手机店不做任何事,等待老板将手机修好类似于网络同步阻塞过程;用户在店中做些其他工作,不时询问老板手机是否修好类似于同步非阻塞过程;用户回到家中,等待手机店老板修好后的电话类似于异步阻塞过程

    74130编辑于 2023-11-14
  • 来自专栏开源519

    网络编程 - Linux Socket编程

    Linux Socket编程 ---- 目录 前言 Socket的功能 Socket基础 Socket类型 基本结构 基本转换函数 基本Socket使用 TCP Socket实例 UDP Socket实例 疑难问题记录 总结 ---- 前言   socket(套接字)是网络编程编程的一种技巧。 本篇不涉及太底层的网络原理,仅说明socket的基本使用方法。主要参考《Linux网络编程》。本篇源码获取方式见文底小字。 总结 socket的实现非常优秀,将复杂的网络通信,封装成简单的socket的接口。使用者不用过多考虑TCP、UDP以及其他较底层的网络概念,而快速的实现一套网络通讯的流程。 网络编程非常有趣,能够实现天南海北之间的通讯,让远距离的人与人、人与物或者物与物之间产生联系,很有意思! 最后 用心感悟,认真记录,写好每一篇文章,分享每一框干货。

    11.7K50编辑于 2023-03-09
  • 来自专栏sktj

    python核心编程(网络编程)

    s.accept() 客户端方法:s.connect() s.connect_ex() image.png image.png image.png 4、创建套接字通信模型: image.png 5、 ADDR=(HOST,PORT) tcpSerSock=socket(AF_INET,SOCK_STREAM) tcpSerSock.bind(ADDR) tcpSerSock.listen(5) StreamRequestHandler类简化socket操作 image.png image.png 客户端 image.png 11、Twisted库:第三方库,提供大量支持来建立完整的系统,包括网络协议 研究至少5 个基于Python 的不同异步系统,可以从Twisted、Greenlets、 Tornado、Diesel、Concurrence、Eventlet、Gevent 等中选择。

    2.1K30编辑于 2022-05-14
领券