我正在尝试使用socket.connect()连接到服务器上的一个端口-我正在使用IP addr和端口向这个函数传递一个元组。这是这里的标准:https://docs.python.org/3/howto/sockets.html#using-a-socket
[som@jsclone pwman]$ cat test.py
#!/home/som/dev/dev/bin/python
import socket
def open_socket(port, ip='127.0.0.1'):
s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
s.connect((ip, port))
return s
sock = open_socket(49152)
当我尝试执行上面的代码时,我得到了错误:
[som@jsclone pwman]$ ./test.py
Traceback (most recent call last):
File "./test.py", line 11, in <module>
sock = open_socket(49152)
File "./test.py", line 7, in open_socket
s.connect((ip, port))
TypeError: a bytes-like object is required, not 'tuple'
Python版本:
[som@jsclone pwman]$ /home/som/dev/dev/bin/python --version
Python 3.7.4
如您所见,只需连接到端口(甚至没有实际发送任何数据),我就得到了这个错误!我知道这种情况,where ^{socket.connect()
我做错了什么?
另外,由于某些其他依赖代码的性质,我不能使用socket.sendto()
它不适合您的原因是您编写了
AF_UNIX
而不是AF_INET
。 UNIX-用于本地进程间通信的套接字。UNIX域套接字不是通过IP地址和端口标识服务器,而是通过路径名来识别请尝试以下代码:
如果您有兴趣阅读有关UNIX套接字的更多信息,可以阅读以下内容:https://troydhanson.github.io/network/Unix_domain_sockets.html
socket.AF_INET
https://realpython.com/python-sockets/
相关问题 更多 >
编程相关推荐