Python 3.x 无法在简单python套接字程序中使用来自客户端的ip地址进行连接
老实说,这或多或少是从python上的网络教程中提出来的-Python 3.x 无法在简单python套接字程序中使用来自客户端的ip地址进行连接,python-3.x,sockets,networking,websocket,ip,Python 3.x,Sockets,Networking,Websocket,Ip,老实说,这或多或少是从python上的网络教程中提出来的- 服务器程序: import socket # Import socket module dd="You connected sucessfully to the server" dd1=bytes(dd,'UTF-8') s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) # Create a socket object
服务器程序:
import socket # Import socket module
dd="You connected sucessfully to the server"
dd1=bytes(dd,'UTF-8')
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) # Create a socket object
host = socket.gethostname() # Get local machine name
port = 12345 # Reserve a port for your service.
s.bind((host, port)) # Bind to the port
s.listen(5) # Now wait for client connection.
while True:
c, addr = s.accept() # Establish connection with client.
print ('Got connection from', addr)
c.send(dd1)
c.close() # Close the connection
客户端:
import socket # Import socket module
s = socket.socket(socket.AF_INET) # Create a socket object
host = '80.78.xxx.xxx' # Get local machine name/value
port = 12345 # Reserve a port for your service.
s.connect((host, port))
print(s.recv(102004))
s.close() # Close the socket when done
所以,我可以在同一台电脑上运行它并得到结果。如果我对代码的理解是正确的,那么host就是localhost。但当我尝试使用ip地址访问它时,它也应该工作。但事实并非如此。请帮忙。它返回错误:错误10060
我将端口12340到12350转发到路由器上的ip地址。删除所有防火墙。然而这种情况发生了
当我尝试使用node.js建立网站时,也发生了类似的错误。在本地主机上运行良好,但在我尝试使用公共IP地址访问时不起作用。我很困惑,如果您能指出任何文献以获得更深入的理解,我会很高兴。“但当我尝试使用ip地址访问它时,它也应该起作用。”-localhost的ip地址是127.0.0.1,而不是80.78.xxx.xxx。通过外部IP访问需要在路由器上进行端口转发,路径中没有防火墙,可能需要支持或NAT发夹。@SteffenUllrich,很抱歉我在问题中没有提到。但我确实移除了所有的防火墙。我“关闭/关闭”了防火墙。我已将端口分配给我的ip地址。我仍然遇到同样的问题。你能详细介绍一下NAT发夹吗?我假设你试图通过外部IP地址从同一网络内部到达一个内部系统。要做到这一点,你的NAT路由器必须支持——有些支持,有些不支持。@SteffenUllrich-wow,非常好的信息,谢谢。最后一个问题,如果客户端与另一个ISP在不同的路由器上运行,它会工作吗?很难说到底发生了什么。您显示的代码很好。因此,一定有你没有表现出来的错误。您可以尝试通过执行数据包捕获(例如使用Wireshark)来缩小问题范围,以查看传出和传入的数据包,并根据您的期望检查这些数据包。