zoukankan      html  css  js  c++  java
  • socketserver 模块的使用

    socketserver模块的使用

    socketserver是一个集成socket,thread,select模块的综合模块,主要用实现用较为简单的方法建立服务端的模块。可以应对较小并发的客户需求。

    socketserver建立TCP服务端。

    服务端

    import socketserver
    
    #处理的方法(服务端工作的方式的类)
    class Myhandler(socketserver.BaseRequestHandler):
        def handle(self):#开始工作自动执行下列函数
            print(self.server)#socketserver对象
            print(self.client_address)#客户端地址
            print(self.request)#客户端连接对象
            while True:
                data = self.request.recv(1024)
                self.request.send(data.upper())
    
    server = socketserver.ThreadingTCPServer(("127.0.0.1",6666),Myhandler)#一以线程的方式建立tcp服务端
    server.serve_forever()#让服务端持续工作

    客户端

    import socket
    client = socket.socket()
    client.connect(("127.0.0.1",6666))
    
    while True:
        msg = input(">>>")
        if not msg:
            continue
        client.send(msg.encode("utf-8"))
        data = client.recv(1024)
        print(data.decode("utf-8"))

    基于UDP的socketserver

    服务端

    import socketserver
    
    addr  = ("127.0.0.1",3239)
    
    
    class Myhandle(socketserver.BaseRequestHandler):
        def handle(self):
            print(self.server)#socketserver对象
            print(self.client_address)
            print(self.request)#数据,和服务端socket对象
            data = self.request[0]
            self.request[1].sendto(data.upper(),self.client_address)
    
    
    server = socketserver.ThreadingUDPServer(addr,Myhandle)
    server.serve_forever()

    客户端

    import socket
    client = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
    
    addr  = ("127.0.0.1",3239)
    while True:
        msg = input(">>>")
        client.sendto(msg.encode("utf-8"),addr)
        data = client.recvfrom(1024)
        print(data[0].decode("utf-8"))
  • 相关阅读:
    [BZOJ 2457] 双端队列 (思维)
    字符串划分 [Bitset 字符串Dp]
    POJ2947 Widget Factory [高斯消元]
    数字串 [分治+哈希+扩展KMP]
    POJ3590 The shuffle Problem [置换+dp]
    P1970 花匠 [权值线段树优化dp, NOIp2003, Y]
    UVA306 Cipher[循环节]
    POJ3270 Cow Sorting [置换]
    POJ 3128 Leonardo's Notebook[置换群幂相关]
    VMware 11 设置U盘启动,总是找不到physicalDrive1
  • 原文地址:https://www.cnblogs.com/msj513/p/9963655.html
Copyright © 2011-2022 走看看