Python 简单的多线程聊天
2024-08-22 20:19:26
# client 端
import socket
ip_port = ('127.0.0.1', 8091)
sk = socket.socket()
sk.connect(ip_port)
print("客户端启动: ")
while True:
inp = input(">>>")
sk.sendall(bytes(inp, "utf8"))
if inp == 'exit':
break
server_response = sk.recv(1024)
print(str(server_response, "utf8"))
sk.close()
# server 端
import socketserver
class MyServer(socketserver.BaseRequestHandler):
def handle(self):
print("服务器启动...")
while True:
conn = self.request
print(self.client_address)
while True:
client_data = conn.recv(1024)
print(str(client_data, "utf8"))
print("waiting...")
server_response = input(">>>")
conn.sendall(bytes(server_response, "utf8"))
conn.close()
if __name__ == '__main__':
server = socketserver.ThreadingTCPServer(('127.0.0.1',8091), MyServer)
server.serve_forever() # 这里会执行 handle 方法,所以 handle 方法里是编写程序逻辑。
创建一个socketserver 至少分以下几步
First, you must create a request handler class by subclassing the BaseRequestHandlerclass and overriding its handle() method; this method will process incoming requests.
Second, you must instantiate one of the server classes, passing it the server’s address and the request handler class.
Then call the handle_request() or serve_forever() method of the server object to process one or many requests.
Finally, call server_close() to close the socket.
最新文章
- 设计模式 之 装饰者(Decorator)模式
- Win10 for Phone 裁剪控件
- springmvc的xml版本和注解版本
- apache2.4 以上设定gzip压缩
- 确认某端口占用情况并结束相应进程(Windows)
- Visual Assist安装、破解方法
- wzplayer,tlplayer支持ActiveX
- 基础-ADO插入数据后返回自增ID @@IDENTITY
- hdu 4585 Shaolin(STL map)
- SQL 调用存储过程
- webpack4升级指南
- Centos PHP+Apache执行exec()等Linux脚本权限设置的详细步骤
- [2]注解(Annotation)-- 深入理解Java:注解(Annotation)自定义注解入门
- C#实现二维码生成与解码
- kubernetes dashboard 二次开发
- Learning Perl 第六章习题第一题
- Java三种编译方式
- PCA误差
- service 需要注意的地方
- 【转】轻舞飞扬 LTE基本架构