• python socket编程入门级


    客户端

    import socket
    import time
    
    sk = socket.socket()  # 第一步:创建socket对象
    address = ('127.0.0.1', 8080)  # 协议是ip+端口(类型元组)
    sk.connect(address)  # 第二步:建立链接
    while True:
        inp = input('客户端>>>>>>>>>
    ')
        if inp == 'exit':
            break
        sk.send(bytes(inp, 'utf8'))  # 第三步:请求数据
        time.sleep(1)  # low方法防止粘包
        data = sk.recv(1024)  # 接收确认信息
        print("接收服务端的数据", str(data, 'utf8'))
    sk.close()
    

      服务端

    import socket
    
    # family type
    # AF_INET,AF_INET6
    # AF_UNIX
    # SOCK_STREAM:: TCP
    # SOCK_DGRAM :: UDP
    # sk只负责绑定端口等待链接,发送接收消息用conn。
    sk = socket.socket()  # 默认参数tcp
    address = ('127.0.1', 8080)
    sk.bind(address)  # 绑定ip协议和端口
    sk.listen(3)  # 定义最大可以挂起连接数。
    print('服务的waiting.......')
    while 1:
        conn, addr = sk.accept()  # 等待接收来自客户端的信息
        print(addr)
        while 1:
            try:
                data = conn.recv(1024)
            except Exception:
                break
            if not data: break
            print('接收到来自客户端的信息......', str(data, 'utf8'))
            inp = input('》》》》》》》》')
            conn.send(bytes(inp, 'utf8'))
    

      使用多线程版

    import socketserver
    
    
    class MyServer(socketserver.BaseRequestHandler):
        # 重写父类的方法
        def handle(self):
            print('waiting.......')
            while 1:
                conn = self.request
                print(self.client_address)
                while 1:
                    try:
                        data = conn.recv(1024)
                    except Exception:
                        break
                    if not data:
                        break
                    print('......', str(data, 'utf8'))
                    inp = input('》》》》》》》》')
                    conn.sendall(bytes(inp, 'utf8'))
                conn.close()
    
    
    if __name__ == '__main__':
        host = '127.0.0.1'
        ip = '8080'
        server = socketserver.ThreadingTCPServer((host, ip), MyServer)#多线程通话
        # 不会出现在一个客户端结束后,当前服务器端就会关闭或者报错,而是继续运行,与其他的客户端继续进行通话。
        server.serve_forever()
    

      

  • 相关阅读:
    Apache ab 压力并发测试工具
    php面试题五之nginx如何调用php和php-fpm的作用和工作原理
    你确定你真的懂Nginx与PHP的交互?
    Linux基本的操作
    【阿里巴巴:高并发的背后】数据库规范
    str()函数
    zfill()方法
    upper()方法
    translate()方法
    title()方法
  • 原文地址:https://www.cnblogs.com/c-x-a/p/9623569.html
Copyright © 2020-2023  润新知