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'))
    

      

  • 相关阅读:
    web api 特点
    码农
    到程序员短缺的地方生活,不要到过剩的地方凑热闹
    程序员也要寻找贸易的机会,要参加研讨会
    [Codeforces 863D]Yet Another Array Queries Problem
    [Codeforces 863C]1-2-3
    [Codeforces 864F]Cities Excursions
    [Codeforces 864E]Fire
    [Codeforces 864D]Make a Permutation!
    [Codeforces 864C]Bus
  • 原文地址:https://www.cnblogs.com/qianzhengkai/p/10819569.html
Copyright © 2011-2022 走看看