请帮助我输入这段代码。错误在下面给出。
错误:套接字成功创建的111连接失败回溯最近调用的最后一个文件custom-iec.py在模块s.sendstartdt中的第27行typeerror发送参数1必须是字符串缓冲区列表
import socket
socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
a = socket.connect_ex(('XXX.XXX.XXX.XXX', 2500))
#s = socket.socket()
port=2500
a=socket.connect_ex(('XXX.XXX.XXX.XXX', port))
print a
Packet = [
0x68,
0x04,
0x43,
0x00,
0x00,
0x00
]
socket.send(Packet)
print s.recv(256)
s.close
答案 0 :(得分:0)
请勿使用您自己的套接字变量覆盖库函数套接字。这样做可能会遇到问题。
socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
^^ - better is: s = socket...
但是我建议您看看@此评论:
import socket clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) clientsocket.connect(('YOURIP', YOURPORT)) clientsocket.send('hello')
答案 1 :(得分:0)
typeerror send参数1必须是字符串缓冲区列表
错误消息的正确措词是:
TypeError: send() argument 1 must be string or buffer, not list
这样说-用Packet = […
定义了一个 list ,而send()
则需要一个 string 或 buffer 。您可以使用Packet = "\x68\x04\x43\x00\x00\x00"
将数据包定义为字符串。