SocketServer 模块

SocketServer 模块是一个基于 socket 模块的高级别的套接字通讯模块,用于简化网络客户与服务器的实现,它支持使用多进程或多线程处理客户端请求

[[email protected] ~]# cat socketserver.py
#!/usr/bin/env python
#-*- coding:utf-8 -*-

import SocketServer

class MyTCPHandler(SocketServer.BaseRequestHandler):    # 定义一个类,并继承BaseRequestHandler这个类
    def handle(self):                                   # 重写handle方法,handle用来处理客户端请求
        while True:
            self.data = self.request.recv(1024).strip()    2.接收客户端请求
            print(self.client_address[0])
            print(self.data)
            self.request.sendall(self.data.upper())        3.发送客户端请求结果
            if not self.data:
                break

if __name__ == "__main__":
    HOST, PORT = "localhost", 1234
    server = SocketServer.ThreadingTCPServer((HOST, PORT), MyTCPHandler)    1.创建一个TCP数据流的套接字(实现了多线程)
    server.serve_forever()    # 表示主进程不退出,如果主进程退出了,线程也就退出了,因此该方法相当于一直运行服务端来接收客户端请求,不退出
[[email protected] ~]# cat client.py
#!/usr/bin/env python
#-*- coding: utf8 -*-

import time
import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((‘127.0.0.1‘, 1234))

while True:
    s.sendall(‘Hello World‘)
    data = s.recv(1024)
    print(data)
    time.sleep(1)

s.close()

可以有多个客户端连接,服务端会多线程处理

原文地址:https://www.cnblogs.com/pzk7788/p/8214798.html

时间: 2024-08-14 06:48:40

SocketServer 模块的相关文章

数据库:socketserver模块、MySQL(一)

一.socketserver实现并发 基于tcp的套接字,关键就是两个循环,一个链接循环,一个通信循环. socketserver模块中分两大类:server类(解决链接问题)和request类(解决通信问题) server类: request类: 继承关系: 以下述代码为例,分析socketserver源码: ftpserver=socketserver.ThreadingTCPServer(('127.0.0.1',8080),FtpServer)ftpserver.serve_foreve

python小白-day8 socketserver模块

SocketServer模块 SocketServer内部使用 IO多路复用 以及 "多线程" 和 "多进程" ,从而实现并发处理多个客户端请求的Socket服务端.即:每个客户端请求连接到服务器时,Socket服务端都会在服务器是创建一个"线程"或者"进程" 专门负责处理当前客户端的所有请求. ThreadingTCPServer ThreadingTCPServer实现的Soket服务器内部会为每个client创建一个 &

SocketServer模块

基本概念 SocketServer内部使用 IO多路复用以及 "多线程" 和 "多进程" ,从而实现并发处理多个客户端请求的Socket服务端.即:每个客户端请求连接到服务器时,Socket服务端都会在服务器是创建一个"线程"或者"进程" 专门负责处理当前客户端的所有请求. 原理 1.服务器启动socket监听端口 2.服务器内部利用while循环监视句柄的变化 3.客户端请求 4.服务器为这个请求分配线程或进程(底层调用se

并发编程之socketserver模块

一.socketserver模块介绍 基于tcp套接字,关键的就是两个循环,一个是链接循环,一个是通信循环 socketserver模块中分两大类:srever类(解决链接问题)和request类(解决通信问题) 源码分析总结: 基于tcp的socketserver我们自己定义的类中 1.    self.server即套接字对象 2.    self.request即一个链接 3.    self.client_address即客户端地址 基于udp的socketserver我们自己定义的类中

Day43:socketserver模块、MySQL

一.socketserver实现并发 基于tcp的套接字,关键就是两个循环,一个链接循环,一个通信循环. socketserver模块中分两大类:server类(解决链接问题)和request类(解决通信问题) server类: request类: 继承关系: 以下述代码为例,分析socketserver源码: ftpserver=socketserver.ThreadingTCPServer(('127.0.0.1',8080),FtpServer)ftpserver.serve_foreve

socket 和 SocketServer 模块

一 .Socket 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket socket(TCP,IP)通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求 socket和file的区别: file模块是针对某个指定文件进行[打开][读写][关闭] socket模块是针对 服务器端 和 客户端Socket 进行[打开][读写][关闭] 建立连接必须有一个服务端和一

Python全栈开发--socketserver模块和验证客户端链接的合法性

验证客户端链接的合法性 分布式系统中实现一个简单的客户端链接认证功能 #_*_coding:utf-8_*_ from socket import * import hmac,os secret_key=b'linhaifeng bang bang bang' def conn_auth(conn): ''' 认证客户端链接 :param conn: :return: ''' print('开始验证新链接的合法性') msg=os.urandom(32) conn.sendall(msg) h=

33、验证客户端的合法性、socketserver模块

一.为了防止客户端被人非法利用,需要在使用之前对客户端进行合法性验证.接下来就是客户端验证的几种方法 hmac  加密方法 以下是服务端: import socket import os import hmac #能转化成密文模块 secret_key=b'apple' #密钥,必须是bytes类型 sk=socket.socket() sk.bind(('127.0.0.1',8008)) sk.listen() def check_con(con): #定义一个验证函数 msg=os.ura

Python学习——socketserver模块

socketserver模块就是socket模块的封装. The socketserver module simplifies the task of writing network servers. socketserver一共有这么几种类型 1 class socketserver.TCPServer(server_address, RequestHandlerClass, bind_and_activate=True) This uses the Internet TCP protocol