我通过套接字与Matlab通信Python。但是,即使在去那里之前,我也想用netcat来测试套接字。所以我使用nc -lkp 25771
建立服务器,并使Python客户端向此服务器发送消息:
import socket
host = 'localhost'
port = 25771
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host,port))
s.send('Hello there')
s.close()
运行python client.py
服务器后打印出'Hello there';但是,在我尝试再次运行客户端脚本之后,它会引发异常。
追踪(最近一次通话): 文件“client.py”,第13行,in s.connect((主机,端口)) 文件“/usr/lib/python2.7/socket.py”,第224行,在meth return getattr(self._sock,name)(* args) socket.error:[Errno 111]拒绝连接
为什么同一命令第二次引发错误?我的第一个命令后发生了什么变化?
答案 0 :(得分:0)
您正在使用传统版本的netcat(netcat-traditional),它不支持-k选项。您可以在终端输入man nc确认检查netcat的手册页。
使用该命令安装netcat-openbsd版本 sudo apt-get install netcat-openbsd
现在使用命令
切换到netcat-openbsd版本sudo update-alternatives --config nc 并选择netcat-openbsd。
现在你可以使用nc -lk 25771。 这会在端口25771上侦听多个连接。
您也可以使用此处讨论的命令 Netcat: using nc -l port_number instead of nc -l -p port_number