• Socket实例


    一、socket处理单个连接

    recv方法不是可以随便接收多大的数据都可以。官方建议是8KB,  即conn.recv(8192)

    import socket
    
    client = socket.socket()
    '''
    等价于client = socket.socket(family=socket.AF_INET, type=socket.SOCKET_STREAM)
    '''
    client.connect(('localhost', 6969))
    client.send(b"hello, server")
    
    data = client.recv(1024)
    print('收到服务器返回数据:', data)
    
    client.close()
    
    #######################################
    #
    # 收到服务器返回数据: b'HELLO, SERVER'
    #
    #######################################
    客户端代码
    import socket
    
    server = socket.socket()
    server.bind(("localhost", 6969))
    server.listen()    # 开始监听
    
    one_person, one_address = server.accept()
    data = one_person.recv(1024)
    print('收到客户端数据:', data)
    one_person.send(data.upper())
    
    server.close()
    
    #######################################
    #
    # 收到客户端数据: b'hello, server'
    #
    #######################################
    服务器端代码

    区别:客户端和服务器连接一通电话,来回通话,如果客户端断开 Windows里服务器端也断开“远程主机关闭了一个现有连接”  Linux里服务器会进入死循环,不停接收到空字符

    注意:不能send空字符。如果send空字符服务器端会卡住,因为此时服务器端还在等待接收数据。 

    二、socket处理单个连接,端口后可以用别的连接启动,客户端输入exit退出

    import socket
    
    client = socket.socket()
    client.connect(('127.0.0.1', 6969))
    while True:
        data = input(">>").strip()
        client.send(data.encode('utf-8'))
        if data.lower() == 'exit':
            break
        print(client.recv(1024).decode("utf-8"))
    
    client.close()
    客户端代码
    import socket
    
    server = socket.socket()
    server.bind(('0.0.0.0', 6969))
    server.listen()
    
    ##############################
    while True:
        first_client, first_address = server.accept()
        while True:
            data = first_client.recv(1024)
            print(first_address, data)
            if data.decode("utf-8").lower() == 'exit':
                print("client is lost..")
                break
            first_client.send(data.upper())
    ##############################
    服务器端代码
  • 相关阅读:
    序列化
    cookie 和 session
    a 标签提交表单
    SpringBoot使用Easypoi导出excel示例
    PDF操作类库 iText
    HandlerInterceptor
    Fastdfs
    InitializingBean
    CORS CorsFilter
    XMLHttpRequest
  • 原文地址:https://www.cnblogs.com/staff/p/9521273.html
Copyright © 2020-2023  润新知