通过 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 连接。