zoukankan      html  css  js  c++  java
  • 基于TCP通过socketserver简单实现并发效果

    一、首先介绍一下 socketserver 模块中的类:

    描述
    BaseServer 包含服务器的核心功能与混合(mix-in)类的钩子功能。这个类用于派生,不要直接生成这个类的类对象
    TCPServer/UDPServer 基本的网络同步TCPUDP服务器
    UnixStreamServer/UnixDatagramServer 基本的基于文件同步TCPUDP服务器
    ForkingTCPServer/ForkingUDPServer 
    ForkingMixIn 和 TCPServer/UDPServer 的组合 
    StreamRequestHandler/DatagramRequestHandler
    TCP/UDP 服务器的请求处理类的一个实现
    ThreadingTCPServer/ThreadingUDPServer  
    ThreadingMixIn 和 TCPServer/UDPServer 的组合 
    BaseRequestHandler 
    包含处理服务请求的核心功能。只用于派生新的类,不要直接生成这个类的对象,可以考虑使用StreamRequestHandler或DatagramRequestHandler
    # 服务端
    
    # -*- coding: utf-8 -*-
    import socketserver
    
    
    
    class MyTCPhandler(socketserver.BaseRequestHandler):
    # handle 方法必须定义,因为在该继承的父类中已经定义了该接口 def handle(self): while True: try: data = self.request.recv(1024) if len(data) == 0: break print('收到客户端消息:%s' % data) self.request.send(data.upper()) except ConnectionResetError: break self.request.close() if __name__ == '__main__': # socketserver在windows系统之上,不支持多进程 server = socketserver.ThreadingTCPServer(('127.0.0.1', 8080), MyTCPhandler) server.serve_forever() # 连接循环

      

    # 客户端
    
    from socket import *
    
    client = socket(AF_INET, SOCK_STREAM)
    client.connect(('127.0.0.1', 8080))
    
    while True:
        data = input('>>>:').strip()
        if not data: continue
        # client.send('hello'.encode('utf-8'))
        client.send(data.encode('utf-8'))
        get_data = client.recv(1024)
        print(get_data.decode('utf-8'))
    

      

  • 相关阅读:
    linux
    查看字符的编码数字
    各种语系的unicode对应以及local编码方式
    Unicode字符集,各个语言的区间
    深入理解Python的字符编码
    php 快排
    归并排序
    检测到在集成的托管管道模式下不适用的 ASP.NET 设置的解决方法
    分布式缓存MemcacheHelper
    单例模式
  • 原文地址:https://www.cnblogs.com/qianzhengkai/p/10819569.html
Copyright © 2011-2022 走看看