zoukankan      html  css  js  c++  java
  • 第一阶段:Python开发基础 day33 网络编程之socketsever模块和udp协议

    一、socketserver模块

    服务端:

    #使用socketserver写服务端
    #导入模块
    import socketserver
    
    #自己定义一个类,必须继承BaseRequestHandler
    class MyTcp(socketserver.BaseRequestHandler):
        #必须重写handle方法
        def handle(self):
            try:
                while True :  #通信循环
                    # print(self)
                    #给客户端回消息
                    #conn对象就是request
                    #接收数据
                    print(self.client_address)
                    data=self.request.recv(1024)
                    print(data)
                    if len(data)==0:
                        return
                    #发送数据
                    self.request.send(data.upper())
            except Exception:
                pass
    
    
    if __name__ == '__main__':
        #实例化得到一个tcp连接的对象,Threading意思是说,只要来了请求,它自动的开线程来处理连接跟交互数据
        #第一个参数是绑定的地址,第二个参数传一个类
        server=socketserver.ThreadingTCPServer(('127.0.0.1',8009),MyTcp)
        #一直在监听
        #这么理解:只要来一个请求,就起一个线程(造一个人,做交互)
        server.serve_forever()
    

    客户端:

    import socket
    import time
    soc=socket.socket()
    
    soc.connect(('127.0.0.1',8009))
    while True:
        soc.send('xxxx'.encode('utf-8'))
        print(soc.recv(1024))
    

    二、udp协议

    服务端:

    # 基础版本
    # import socket
    # #udp
    # server=socket.socket(type=socket.SOCK_DGRAM)
    #
    # server.bind(('127.0.0.1', 8003))
    # # udp不要建立连接,直接发
    # #需不需要监听?
    # #跟tcp的不是一样的
    # # data=server.recvfrom(1024)
    # data,addr=server.recvfrom(1024)
    # #data 是个元组,第一个参数是数据不部分,第二个参数是客户端地址
    # print(data)
    # server.sendto(data.upper(),addr)
    
    
    #加入通信循环
    
    import socket
    #udp
    server=socket.socket(type=socket.SOCK_DGRAM)
    
    server.bind(('127.0.0.1', 8003))
    
    while True:
        data,addr=server.recvfrom(1024)
        print(data)
        server.sendto(data.upper(),addr)
    

    客户端:

    # import socket
    # #udp
    # client=socket.socket(type=socket.SOCK_DGRAM)
    #
    #
    # #直接发
    # client.sendto(b'lqz',('127.0.0.1', 8003))
    # data=client.recvfrom(1024)
    # print(data)
    
    #加入通信循环
    import socket
    #udp
    client=socket.socket(type=socket.SOCK_DGRAM)
    
    while True:
        msg=input('>>:')
        #直接发
        client.sendto(msg.encode('utf-8'),('127.0.0.1', 8003))
        data=client.recvfrom(1024)
        print(data)
    
  • 相关阅读:
    使用paramiko的问题记录
    python常见异常及解决方法
    linux ps -aux各列含义
    常用技能
    超时程序管理
    跨年的总结和展望
    java json和对象互转
    一些常用功能总结
    ResultSet转成java类对象
    python常用功能总结
  • 原文地址:https://www.cnblogs.com/foreversun92/p/11528396.html
Copyright © 2011-2022 走看看