
网络编程
_Bruce
在其职,谋其政,尽其责
展开
-
Tcp网络通信中各个状态的含义
CLOSED: 这个表示初始状态。LISTEN(服务器): 这个也是非常容易理解的一个状态,表示服务器端的某个SOCKET处于监听状态,可以接受连接了。SYN_RCVD(服务器): 这个状态表示接受到了SYN报文,在正常情况下,这个状态是服务器端的SOCKET在建立TCP连接时的三次握手会话过程中的一个中间状态,很短暂,基本上用netstat你是很难看到这种状态的,除非你特意写了一个客户端测试程序,故意将三次TCP握手过程中最后一个ACK报文不予发送。因此这种状态时,当收到客户端的ACK报文后,它会原创 2020-08-20 11:13:38 · 3603 阅读 · 0 评论 -
查看网络端口被哪个应用程序占用
1、开始---->运行---->cmd,或者是window+R组合键,调出命令窗口2、输入:netstat -ano3、知道自己要查找的端口,然后找到相对应的PID4、然后打开我们的任务管理器然后根据上边PID就能找到相对应的进程...原创 2020-02-12 16:02:16 · 597 阅读 · 0 评论 -
python socket的应用
python通过socket获取百度网页内容# -*- coding:utf-8 -*-import socketdef socket_client(): #创建socket对象 s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #获取主机名 host = 'www.baidu.com' #设...原创 2020-01-21 18:20:33 · 168 阅读 · 0 评论 -
windows查看被占用端口和进程
例如,发现 8000 端口被占用,希望找到占用此端口的进程并结束它。1、打开命令行,查看占用 8000 端口的进程ID;netstat -aon | findstr "8000"2、假设找到的进程ID为310752,则再根据进程ID,查看该进程名称;tasklist | findstr "310752"3、打开任务管理器,根据已知的进程名称或进程ID,结束该进程。...原创 2019-09-30 12:10:47 · 436 阅读 · 0 评论 -
高性能网络编程(七)--tcp连接的内存使用
当服务器的并发TCP连接数以十万计时,我们就会对一个TCP连接在操作系统内核上消耗的内存多少感兴趣。socket编程方法提供了SO_SNDBUF、SO_RCVBUF这样的接口来设置连接的读写缓存,linux上还提供了以下系统级的配置来整体设置服务器上的TCP内存使用,但这些配置看名字却有些互相冲突、概念模糊的感觉,如下(sysctl -a命令可以查看这些配置):[cpp]转载 2017-12-17 22:43:10 · 636 阅读 · 0 评论 -
高性能网络编程(六)----reactor反应堆与定时器管理
反应堆开发模型被绝大多数高性能服务器所选择,上一篇所介绍的IO多路复用是它的实现基础。定时触发功能通常是服务器必备组件,反应堆模型往往还不得不将定时器的管理囊括在内。本篇将介绍反应堆模型的特点和用法。首先我们要谈谈,网络编程界为什么需要反应堆?有了IO复用,有了epoll,我们已经可以使服务器并发几十万连接的同时,维持高TPS了,难道这还不够吗?我的答案是,技术层面足够了,但在软件转载 2017-12-17 22:42:01 · 336 阅读 · 0 评论 -
高性能网络编程(五)----IO复用与并发编程
对于服务器的并发处理能力,我们需要的是:每一毫秒服务器都能及时处理这一毫秒内收到的数百个不同TCP连接上的报文,与此同时,可能服务器上还有数以十万计的最近几秒没有收发任何报文的相对不活跃连接。同时处理多个并行发生事件的连接,简称为并发;同时处理万计、十万计的连接,则是高并发。服务器的并发编程所追求的就是处理的并发连接数目无限大,同时维持着高效率使用CPU等资源,直至物理资源首先耗尽。并转载 2017-12-17 22:40:23 · 805 阅读 · 0 评论 -
高性能网络编程(四)--TCP连接的关闭
TCP连接的关闭有两个方法close和shutdown,这篇文章将尽量精简的说明它们分别做了些什么。为方便阅读,我们可以带着以下5个问题来阅读本文:1、当socket被多进程或者多线程共享时,关闭连接时有何区别?2、关连接时,若连接上有来自对端的还未处理的消息,会怎么处理?3、关连接时,若连接上有本进程待发送却未来得及发送出的消息,又会怎么处理?4、so_linger这个功能的转载 2017-12-17 22:39:15 · 807 阅读 · 0 评论 -
高性能网络编程(三)----TCP消息的接收
这篇文章将试图说明应用程序如何接收网络上发送过来的TCP消息流,由于篇幅所限,暂时忽略ACK报文的回复和接收窗口的滑动。为了快速掌握本文所要表达的思想,我们可以带着以下问题阅读:1、应用程序调用read、recv等方法时,socket套接字可以设置为阻塞或者非阻塞,这两种方式是如何工作的?2、若socket为默认的阻塞套接字,此时recv方法传入的len参数,是表示必须超时(SO_RC转载 2017-12-17 22:31:05 · 1396 阅读 · 0 评论 -
高性能网络编程(二)----TCP消息的发送
在上一篇中,我们已经建立好的TCP连接,对应着操作系统分配的1个套接字。操作TCP协议发送数据时,面对的是数据流。通常调用诸如send或者write方法来发送数据到另一台主机,那么,调用这样的方法时,在操作系统内核中发生了什么事情呢?我们带着以下3个问题来细细分析:发送方法成功返回时,能保证TCP另一端的主机接收到吗?能保证数据已经发送到网络上了吗?套接字为阻塞或者非阻塞时,发送方法做的事情有何不转载 2017-12-17 22:29:04 · 701 阅读 · 0 评论 -
高性能网络编程(一)----accept建立连接
最近在部门内做了个高性能网络编程的培训,近日整理了下PPT,欲写成一系列文章从应用角度谈谈它。编写服务器时,许多程序员习惯于使用高层次的组件、中间件(例如OO(面向对象)层层封装过的开源组件),相比于服务器的运行效率而言,他们更关注程序开发的效率,追求更快的完成项目功能点、希望应用代码完全不关心通讯细节。他们更喜欢在OO世界里,去实现某个接口、实现这个组件预定义的各种模式、设置组件参数来达到目转载 2017-12-17 22:26:53 · 220 阅读 · 0 评论 -
门面模式的典型应用 Socket 和 Http(post,get)、TCP/IP 协议的关系总结
门面模式的一个典型应用:Socket套接字(Socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。在设计模式中,Socket其实就是一个⻔面模式,它把复杂的TCP/IP协议族隐藏在Socket转载 2016-11-25 16:32:05 · 1103 阅读 · 0 评论