zoukankan      html  css  js  c++  java
  • python中的sockeserver模块简单实用

    1、 socketserver模块简介

    在python的socket编程中,实用socket模块的时候,是不能实现多个连接的,当然如果加入其它的模块是可以的,例如select模块,在这里见到的介绍下socketserver模块。

    socketserver,看其名字,就知道是一个socket的服务器模块的使用,在这个模块中,主要也就是实现服务器类的相关功能,在其中,也就是将socket模块和select模块进行了封装,从而创建了一些基类供人使用。

    SocketServer模块简单化了编写网络服务器的工作。
    它提供了四个基本的服务类:TCPServer(使用TCP协议)、UDPServer(使用数据报)、UnixStreamServer、

     2、 socketserver服务器端和客户端代码

    用SocketServer创建一个服务器需要三步:

    1、通过子类化BaseRequestHandler类和覆盖它的handle()方法来创建一个请求处理器类,用于处理进来

    的请求;
    2、实例化服务类如TCPServer,并传递给它参数:服务器地址和请求处理器类;
    3、调用服务实例对象的handle_request()或serve_forever()方法去处理请求。

     1 #服务端
     2 import socketserver
     3 import time
     4 class MyServer(socketserver.BaseRequestHandler):
     5     def handle(self):
     6         #print("服务端启动")
     7         print(self.client_address)
     8         while True:
     9             conn=self.request
    10             #print(self.client_address)
    11             while True:
    12                 client_data=conn.recv(1024)
    13                 print(str(client_data,'utf8'))
    14                 print('waiting....')
    15                 strtime=time.strftime('%Y-%m-%d %X')
    16                 inp=input('>>>>>>>>')
    17                 data=('%s %s'%(inp,strtime))
    18                 conn.sendall(bytes(data,'utf8'))
    19             conn.close()
    20 
    21 if __name__=='__main__':
    22     server=socketserver.ThreadingTCPServer(('127.0.0.1',8090),MyServer)
    23     server.serve_forever()
    #客户端
    import socket
    sk=socket.socket()
    print(sk)
    address=('127.0.0.1',8090)
    sk.connect(address)
    while True:
       inp =input('>>>>>')
       if inp=='exit':
           break
       sk.sendall(bytes(inp,'utf-8'))
       data=sk.recv(1024)
       print(str(data,'utf8'))
    sk.close()

    运行结果可以打开多个客户端与服务端发送信息:

    Python 深入剖析SocketServer模块:https://blog.csdn.net/liuming9283/article/details/52439880(转载)

  • 相关阅读:
    Web前段学习索引
    Python学习索引
    Centos7下安装Docker(详细的新手教程)
    Django部署阿里云服务器(nginx+uwsgi)
    (转)Mongo db 与mysql 语法比较
    (转)mongo基本常用命令
    python操作mongodb的基本操作命令
    http响应码
    python回调函数
    Flask框架的使用
  • 原文地址:https://www.cnblogs.com/lanyinhao/p/9216339.html
Copyright © 2011-2022 走看看