在Python 3中通过套接字发送原始二进制数据

时间:2016-11-23 11:56:16

标签: python sockets huffman-code

我正在研究霍夫曼编码和解码。我已经使用霍夫曼算法将字符串编码为二进制文件,现在我想使用Python 3通过套接字将其发送到另一台计算机,其中编码数据将被解码回来。这样做最有效的方法是什么?

代码的编码器部分:

sqlContext.sql("select * from table1 CROSS JOIN table2 CROSS JOIN table3...")

2 个答案:

答案 0 :(得分:0)

您需要以字节码发送字符串值,然后您可以执行:socket.send(byte(message,'utf-8'))socket.send(message.encode())

如果您想发送一些纯文本,可以直接发送:b'Spain'但如果您的文字是utf-8(非ascii),则必须执行:'España'.encode()

查看此客户端示例,并观看默认情况下使用UTF-8的.encode().decode()

#!/usr/bin/python3
import socket

s = socket.socket()
s.connect(("localhost", 9999))

while True:
    msg = input("> ")
    s.send(msg.encode())
    if msg == "quit":
        break
    received=s.recv(1024)
    print(received.decode())

print("Bye")

s.close()

答案 1 :(得分:0)

看看https://docs.python.org/3/howto/unicode.html 当尝试发送原始的8位二进制数据时,Python会在遵循以下规则通过套接字发送数据之前对其进行编码:

  

“如果值<128,则用相应的字节表示   值。如果该值> = 128,则将其转换为两个序列,   三个或四个字节,其中序列的每个字节在128之间   和255。”

一旦您设法将8位数据数组转换为字符串,请使用发送该字符串

socket.send_string(yourstring.encode('latin-1')