【发布时间】:2017-07-20 01:43:25
【问题描述】:
我在 user3132092 的 stackoverflow (link) 中找到了这个示例,用于 TCP 客户端通过 TCP 发送“Hello world”字符串:
发送字符串
import socket
host = socket.gethostname()
port = 12345 # The same port as used by the server
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
s.sendall(b'Hello, world')
问题是 s.sendall() 如何像接受二进制文件一样接受字符串作为参数? “Hello world”是否转换为二进制?
在此示例(链接)中,s.sendall(link) 正在发送之前使用 python 结构转换为二进制的二进制文件。为什么“Hello World”不需要结构体?
发送二进制文件
import struct
values = (1, 'ab', 2.7)
packer = struct.Struct('I 2s f')
packed_data = packer.pack(*values)
print >>sys.stderr, 'sending "%s"' % binascii.hexlify(packed_data), values
sock.sendall(packed_data)
【问题讨论】: