代码之家  ›  专栏  ›  技术社区  ›  Matt

Python-tcp套接字,创建一个catch-all函数来接收数据

  •  2
  • Matt  · 技术社区  · 6 年前

    我正在尝试编写一个可以重用的函数来可靠地接收任何数量的tcp数据。

    conn 是我连接的插座。

    到目前为止,我有以下几点:

    import socket
    
    def recv_tcp_data(conn, byte_size):
        chunks = []
        while True:
            data = conn.recv(byte_size)
            if data:
                chunks.append(data)
            else:
                break
        return chunks as result
    

    chunks 一起编码字符串的列表。

    .decode("utf-8") 直接在函数的输出上,而不必在函数外部操纵函数的输出。

    编辑:为了澄清-我正在尝试创建一个函数来接收编码数据的缓冲区,然后将这些缓冲区作为编码数据返回 result result.decode("utf-8") 在功能之外。

    编辑2:进一步澄清- 我基本上是在找一个 .join()

    2 回复  |  直到 6 年前
        1
  •  0
  •   Matt    6 年前

    我发现我可以用 b"".join(list_name) 将字节列表连接在一起

        2
  •  0
  •   user10434643 user10434643    6 年前

    这就行了 b''.join(chunks)

    #!/usr/bin/env python
    
    import socket
    
    
    TCP_IP = '127.0.0.1'
    TCP_PORT = 1234
    
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.bind((TCP_IP, TCP_PORT))
    s.listen(1)
    
    conn, addr = s.accept()
    print 'Connection address:', addr
    
    
    def recv_tcp_data(conn, byte_size):
        chunks = []
        while True:
            data = conn.recv(byte_size)
            if data:
                chunks.append(data)
            else:
                break
        return b''.join(chunks)
    
    
    print recv_tcp_data(conn, 20)
    conn.close()
    
    推荐文章