Python网络编程笔记二

使用select模块实现IO多路复用服务端

 1 import socket
 2 import select
 3 #windows上只支持select.select,不支持poll epoll
 4
 5 HOST = "127.0.0.1"
 6 PORT = 9999
 7 BUFFSIZE = 1024
 8 ADDR = (HOST, PORT)
 9 #创建服务器端监听套接字
10 tcpSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
11 tcpSocket.bind(ADDR)
12 tcpSocket.listen(5)
13 tcpSocket.setblocking(0)
14
15
16 #监听读事件
17 inputs = [tcpSocket]
18 #监听写事件
19 outputs = []
20 #监听异常事件
21 exceptions = []
22
23 while True:
24     #每当有客户端连接时,返回的r_list中包含监听的服务器套接字tcpSocket
25     r_list, w_list, e_list = select.select(inputs, outputs, exceptions, 1)
26     print(len(inputs))
27     for r in r_list:
28         if r == tcpSocket:
29             request, addr = r.accept()
30             request.setblocking(0)
31             #将客户端套接字加入到监听列表中,接下来每当客户端发送数据过来,r_list中即可包含该套接字
32             inputs.append(request)
33         #如果套接字不等于tcpSocket,说明是客户端发送数据
34         else:
35             try:
36                 dataBytes = r.recv(1024)
37                 dataStr = str(dataBytes, encoding="utf-8")
38                 print("接收到来自", r.getpeername(), " : ", dataStr)
39                 r.sendall(bytes("已经收到您发送的" + dataStr, encoding="utf-8"))
40             #说明客户端断开连接
41             #ConnectionResetError
42             except Exception as e:
43                 #将客户端套接字移除出监听列表
44                 inputs.remove(r)
45                 r.close()
46 tcpSocket.close()
时间: 2024-08-05 20:38:19

Python网络编程笔记二的相关文章

python 网络编程 (二)---tcp

异常 python的socket模块实际上定义了4种可能出现的异常: 1)与一般I/O 和通信问题有关的socket.error; 2)与查询地址信息有关的socket.gaierror; 3)与其他地址错误有关的socket.herror; 4)与在一个socket上调用settimeout()后,处理超时有关的socket.timeout; import socket, sys, time host = sys.argv[1] textport = sys.argv[2] filename

Python 网络编程(二)

Python 网络编程 上一篇博客介绍了socket的基本概念以及实现了简单的TCP和UDP的客户端.服务器程序,本篇博客主要对socket编程进行更深入的讲解 一.简化版ssh实现 这是一个极其简单的仿ssh的socket程序,实现的功能为客户端发送命令,服务端接收到客户端的命令,然后在服务器上通过subrocess模块执行命令,如果命令执行有误,输出内容为空,则返回"command error"的语句给客户端,否则将命令执行的结果返回给客户端 服务端 1 2 3 4 5 6 7 8

Python网络编程(二)

网络编程基础 计算机网络功能主要包括实现资源共享,实现数据信息的快速传递. OSI七层模型 制定组织: ISO(国际标准化组织) 作用:使网络通信工作流程标准化 应用层 : 提供用户服务,具体功能有应用程序实现 表示层 : 数据的压缩优化加密 会话层 : 建立用户级的连接,选择适当的传输服务 传输层 : 提供传输服务 网络层 : 路由选择,网络互联 链路层 : 进行数据交换,控制具体数据的发送 物理层 : 提供数据传输的硬件保证,网卡接口,传输介质 优点: 建立了统一的工作流程 分部清晰,各司其

PYTHON网络编程笔记

socket.socket(socket.AF_INET,socket.SOCK_STREAM) AF 表示ADDRESS FAMILY 地址族 PF 表示PROTOCOL FAMILY 协议族 但这两个宏定义是一样的 所以使用哪个都没有关系 Winsock2.h中 #define AF_INET 0 #define PF_INET AF_INET 所以在windows中AF_INET与PF_INET完全一样 而在Unix/Linux系统中,在不同的版本中这两者有微小差别 对于BSD,是AF,对

Python网络编程(二)通过ThreadingMixIn实现多线程异步套接字程序

使用ThreadingMixIn类的特点: 在线程间共享应用的状态,与使用ForkingMixIn类相比避免进程间通信的复杂操作. 代码如下: 1 #! /usr/bin/python 2 3 import os 4 import socket 5 import threading 6 import SocketServer 7 8 SERVER_HOST = 'localhost' 9 SERVER_PORT = 0 10 BUF_SIZE = 1024 11 12 def client(ip

第十三章:Python の 网络编程进阶(二)

本課主題 Python 中的 ORM - SQLAlchemy Paramiko 介紹和操作 初探堡垒机 Python 中的 ORM - SQLAlchemy 这是一个叫 Object Relational Mapping,可以让我们通过类和对象来操作数据库,具体功能包括创建表,定义数据类型,新增或者查询,一舨MySQL 能做的功能,都可以在 SQLALchemy 里做. 表操作 创建表 CREATE TABLE 删除表 DROP TABLE 清空表 TRANSCATE 创建临时表 CREATE

python网络编程【二】(使用TCP)

1.建立socket 对于一个客户端程序来说,建立一个socket需要两个步骤.首先,您需要建立一个实际的socket对象.其次,您需要把它连接到远程服务器上. 在建立socket对象的时候,您需要告诉系统两件事:通信类型和协议家族.通信类型指明用什么协议来传输数据.协议的例子包括IPv4(当前的Internet标准),IPv6(将来的Internet标准),IPX/SPX(NetWare)和AFP(Apple文件共享).到目前为止最通用的是IPv4. 协议家族则定义数据如何被传输,通信类型基本

Python网络编程笔记一

AF_INET:IPV4 AF_INET6:IPV6 套接字类型: SOCK_STREAM:TCP SOCK_DGRAM:UDP 创建TCP套接字,也可以不传递参数,默认创建TCP套接字 tcpSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 下面是基于python3实现的简单的TCP服务端和客户端 TCP使用send.recv发送和接收数据 服务端: 1 import socket 2 3 HOST = "127.0.0.1&

《Python网络编程基础》笔记

主要是关于<Python网络编程笔记>这本书的笔记...可能有点乱... 总共包含6个部分.. 第一部分 第1章:客户/服务器网络介绍 未完待续.....