python - 如何在一行中的套接字连接的发送方法中将字符串编码为字节?

标签 python sockets python-3.5

在 Python 3.5 中,使用套接字,我有:

message = 'HTTP/1.1 200 OK\nContent-Type: text/html\n\n'
s.send(message.encode())

我怎样才能在一行中做到这一点?我问是因为我有:

s.send('HTTP/1.1 200 OK\nContent-Type: text/html\n\n')

但是在 Python 中需要 3.5 个字节,而不是字符串,所以这给出了错误:

builtins.TypeError: a bytes-like object is required, not 'str'

我不应该使用发送吗?

最佳答案

strtext 的类型,不同于bytes八位字序列的类型。要简洁地从一个转换为另一个,您可以内联对 encode 的调用(就像您可以使用任何函数调用一样)...

s.send('HTTP/1.1 200 OK\nContent-Type: text/html\n\n'.encode())

.. 请记住,指定您要使用的编码通常是个好主意...

s.send('HTTP/1.1 200 OK\nContent-Type: text/html\n\n'.encode('ascii'))

...但使用 bytes literal 更简单.在字符串前加上 b:

s.send(b'HTTP/1.1 200 OK\nContent-Type: text/html\n\n')

但是你知道什么更简单吗?让其他人为您做 HTTP。您是否考虑过使用服务器,例如 Flask ,甚至 the standard library ,构建您的应用程序?

关于python - 如何在一行中的套接字连接的发送方法中将字符串编码为字节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35092256/

相关文章:

python - 如何从列表和字典中生成输出并将它们的结果输出与字典值匹配?

python - 重叠艺术家的 Matplotlib 选择事件顺序

python - 尝试在树莓派上托管python套接字服务器时出现ConnectionRefusedError

ubuntu - Pycharm - 未找到 Python 打包工具

python - 如何找到具有最少步数的元素

python - 名义有序列表中 scipy.stats.spearmanr 的参数是什么?

python - Unix 域套接字 C 服务器和 Python 客户端

c++ - 打开带有临时端口的 Boost.Asio UDP 套接字

youtube - 使用 python 自动播放 youtube 结果中的第一个视频

android - 我如何开始打包我的 Android 应用程序? [基维]