我通过套接字与Matlab通信Python . 但是,即使在去那里之前,我想用netcat测试套接字 . 所以我使用 nc -lkp 25771
Build 服务器,并使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行,在s.connect((主机,端口))文件“/usr/lib/python2.7/socket.py”,第224行, meth return getattr(self._sock,name)(* args)socket.error:[Errno 111]连接被拒绝
为什么同一命令第二次引发错误?我的第一个命令后有什么变化?
1 回答
您正在使用不支持-k选项的传统版本的netcat(netcat-traditional) . 您可以通过在终端中输入man nc来确认检查netcat的手册页 .
使用命令sudo apt-get install netcat-openbsd安装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