Python学习笔记375

简介: Python 网络编程

异步模式多客户端的例子。

server.py

import selectors

import socket


sel = selectors.DefaultSelector()



def accept(sock, mask):

   conn, addr = sock.accept()  # Should be ready

   print('accepted', conn,'from', addr)

   conn.setblocking(False)

   sel.register(conn, selectors.EVENT_READ, read)



def read(conn, mask):

   try:

       data = conn.recv(1000)  # Should be ready

   except:

       print('closing 1', conn)

       sel.unregister(conn)

       conn.close()

   else:

       if data:

           print('echoing', repr(data),'to', conn)

           conn.send(data)  # Hope it won't block

       else:

           print('closing 2', conn)

           sel.unregister(conn)

           conn.close()



sock = socket.socket()

sock.bind((socket.gethostname(),12345))

sock.listen(100)

sock.setblocking(False)

sel.register(sock, selectors.EVENT_READ, accept)


whileTrue:

   '''

   第一次: 会阻塞在select()这里,

   解除阻塞: 当客户端调用connect方法时,解除阻塞,此时callback是本代码中的accept方法, 执行完之后,又阻塞在select

   第二次: 当客户端调用send发消息时, 解除阻塞, 此时callback是本代码中的read方法

   '''

   events = sel.select()

   for key, mask in events:

       callback = key.data

       callback(key.fileobj, mask)

相关文章
|
3月前
|
网络协议 Java Linux
PyAV学习笔记(一):PyAV简介、安装、基础操作、python获取RTSP(海康)的各种时间戳(rtp、dts、pts)
本文介绍了PyAV库,它是FFmpeg的Python绑定,提供了底层库的全部功能和控制。文章详细讲解了PyAV的安装过程,包括在Windows、Linux和ARM平台上的安装步骤,以及安装中可能遇到的错误和解决方法。此外,还解释了时间戳的概念,包括RTP、NTP、PTS和DTS,并提供了Python代码示例,展示如何获取RTSP流中的各种时间戳。最后,文章还提供了一些附录,包括Python通过NTP同步获取时间的方法和使用PyAV访问网络视频流的技巧。
679 4
PyAV学习笔记(一):PyAV简介、安装、基础操作、python获取RTSP(海康)的各种时间戳(rtp、dts、pts)
|
3月前
|
Python
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
使用Python的socket库实现客户端到服务器端的图片传输,包括客户端和服务器端的代码实现,以及传输结果的展示。
198 3
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
|
3月前
|
JSON 数据格式 Python
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
本文介绍了如何使用Python的socket模块实现客户端到服务器端的文件传输,包括客户端发送文件信息和内容,服务器端接收并保存文件的完整过程。
222 1
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
|
3月前
|
关系型数据库 MySQL 数据库
Mysql学习笔记(四):Python与Mysql交互--实现增删改查
如何使用Python与MySQL数据库进行交互,实现增删改查等基本操作的教程。
83 1
|
3月前
|
Ubuntu Linux Python
Ubuntu学习笔记(六):ubuntu切换Anaconda和系统自带Python
本文介绍了在Ubuntu系统中切换Anaconda和系统自带Python的方法。方法1涉及编辑~/.bashrc和/etc/profile文件,更新Anaconda的路径。方法2提供了详细的步骤指导,帮助用户在Anaconda和系统自带Python之间进行切换。
175 1
|
3月前
|
索引 Python
Python学习笔记编程小哥令狐~持续更新、、、(上)
Python学习笔记编程小哥令狐~持续更新、、、(上)
56 2
|
3月前
|
存储 Python
Python学习笔记编程小哥令狐~持续更新、、、 (下)
Python学习笔记编程小哥令狐~持续更新、、、 (下)
43 1
|
3月前
|
存储 Python
【免费分享编程笔记】Python学习笔记(二)
【免费分享编程笔记】Python学习笔记(二)
52 0
【免费分享编程笔记】Python学习笔记(二)
|
3月前
|
Java 编译器 Go
Python学习笔记--- day01计算机基础和环境搭建(一)
Python学习笔记--- day01计算机基础和环境搭建(一)
57 2
|
3月前
|
程序员 编译器 Python
Python学习笔记--- day01计算机基础和环境搭建(二)
Python学习笔记--- day01计算机基础和环境搭建(二)
59 1

热门文章

最新文章