通过 nc 或 telnet 测试 python 套接字服务器
test python socket server by nc or telnet
我有一个简单的套接字服务器 python
#!/usr/bin/python3 # This is server.py file
import socket
# create a socket object
serversocket = socket.socket(
socket.AF_INET, socket.SOCK_STREAM)
# get local machine name
host = socket.gethostname()
port = 2115
# bind to the port
serversocket.bind((host, port))
# queue up to 5 requests
serversocket.listen(5)
while True:
# establish a connection
clientsocket,addr = serversocket.accept()
print("Got a connection from %s" % str(addr))
msg = serversocket.recv(1024)
print (msg.decode('ascii'))
clientsocket.close()
我想通过 nc 或 telnet 来测试这个服务器
telnet 127.0.0.1 2115
但导致错误
但是当我尝试通过另一个用 python 编写的套接字程序连接时。效果不错
当您执行 host = socket.gethostname()
时,您的 host
被分配给 "MacBookPro.local"
之类的东西。然后你将你的服务器绑定到它 serversocket.bind((host, port))
。因此,您的侦听套接字未绑定到 127.0.0.1
,因此来自 telnet 的连接尝试被拒绝。
相反,请尝试 serversocket.bind('', port)
并重新 运行 您的服务器。这次,它应该接受 telnet 连接。
我有一个简单的套接字服务器 python
#!/usr/bin/python3 # This is server.py file
import socket
# create a socket object
serversocket = socket.socket(
socket.AF_INET, socket.SOCK_STREAM)
# get local machine name
host = socket.gethostname()
port = 2115
# bind to the port
serversocket.bind((host, port))
# queue up to 5 requests
serversocket.listen(5)
while True:
# establish a connection
clientsocket,addr = serversocket.accept()
print("Got a connection from %s" % str(addr))
msg = serversocket.recv(1024)
print (msg.decode('ascii'))
clientsocket.close()
我想通过 nc 或 telnet 来测试这个服务器
telnet 127.0.0.1 2115
但导致错误 但是当我尝试通过另一个用 python 编写的套接字程序连接时。效果不错
当您执行 host = socket.gethostname()
时,您的 host
被分配给 "MacBookPro.local"
之类的东西。然后你将你的服务器绑定到它 serversocket.bind((host, port))
。因此,您的侦听套接字未绑定到 127.0.0.1
,因此来自 telnet 的连接尝试被拒绝。
相反,请尝试 serversocket.bind('', port)
并重新 运行 您的服务器。这次,它应该接受 telnet 连接。