用于发送的Python 3.5套接字包错误

时间:2015-12-30 21:21:24

标签: python sockets python-3.x

我从Coursera学习Python课程。我试图使用Python 3.5运行幻灯片中提供的以下示例代码:

import socket
mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
mysock.connect(('www.py4inf.com', 80))
mysock.send('GET http://www.py4inf.com/code/romeo.txt HTTP/1.0\n\n')

但我收到了这个错误:

  

TypeError:需要类似字节的对象,而不是'str'

有人知道如何解决这个问题吗?我想这可能是由于Python的版本。该课程使用的是Python 2.X。

1 个答案:

答案 0 :(得分:1)

看看docs。它声明send采用bytes参数。您正在通过str。这也是错误信息所说的完全相同的事情。

要使您的示例工作,请使用bytes文字:

mysock.send(b'GET http://www.py4inf.com/code/romeo.txt HTTP/1.0\n\n')

注意'

前面的 b

我们你可以encode你的字符串:

mysock.send('GET http://www.py4inf.com/code/romeo.txt HTTP/1.0\n\n'.encode())

修改

你是对的:在python 2中socket.send期望可以看到str here