Python 创建一个客户机-服务器应用程序

Python 创建一个客户机-服务器应用程序,python,url,client-server,client,webclient,Python,Url,Client Server,Client,Webclient,我曾经在同一台计算机上创建web应用程序,但如果服务器和客户端不在同一台计算机上,我们如何访问网页 我的意思是,例如,我有一个html表单和一个按钮“ok”: 如果服务器和客户机在同一台计算机上,在action=”“中我们放置localhost/file.py,但是如果服务器和客户机不在同一台计算机上,如何执行此操作?因为客户端不能在其webbrower(url)中使用localhost。表单的“操作”部分是url,如果不指定scheme://host:port 作为URL的一部分,客户端将解析

我曾经在同一台计算机上创建web应用程序,但如果服务器和客户端不在同一台计算机上,我们如何访问网页

我的意思是,例如,我有一个html表单和一个按钮“ok”:
如果服务器和客户机在同一台计算机上,在action=”“中我们放置localhost/file.py,但是如果服务器和客户机不在同一台计算机上,如何执行此操作?因为客户端不能在其webbrower(url)中使用localhost。

表单的“操作”部分是url,如果不指定scheme://host:port 作为URL的一部分,客户端将解析当前页面。IOW:只需将路径部分放在脚本的URL中,就可以了。FWIW硬编码scheme://host:port 正如您刚刚发现的,您的URL中有一个是反模式的。

您的脚本应该由web服务器作为CGI脚本运行,该服务器设置环境变量,如REMOTE\u ADDR、REQUEST\u METHOD

您正在自己运行脚本,而此环境变量不可用


这就是为什么会出现关键错误。

为什么不能只使用
action=“/file.py”
其中
是网站所在计算机的IP地址?@pascalhein:但是对于服务器IP,我看到了REMOTE\u ADDR或socket.gethostname(),但两者都在URL中返回localhost:(,我有一个python服务器,我在命令行中执行python脚本。
socket.getaddrinfo(socket.gethostname(),None)
将为您的主机提供所有配置的IP,您必须选择您的客户端有权访问的IP(因此,如果您的服务器有地址
192.168.0.2
10.192.3.14
,而您的客户端只属于
192.168.0.0/16
,则必须使用这两个地址中的第一个)我尝试了ip=REMOTE\u ADDR,或socket.getaddrinfo(socket.gesthostname(),None),但我已经:localhost as URL:(因此,我在我的python文件参数中有一个参数,当我想用该IP=cgi.escape(os.environ[“REMOTE_ADDR”])获取客户机的IP地址时,然后我将${IP}放在操作中,它返回一个错误:文件“/fileP.py”,第47行,在main(IP,name,city)文件中“/fileP.py”,第22行,在main IP=cgi.escape(os.environ[“REMOTE_ADDR”])文件“/usr/lib/python2.6/UserDict.py”,第22行,在getitem raise KeyError(key)KeyError:“REMOTE\u ADDR”我不明白。这意味着
REMOTE\u ADDR
没有在脚本执行的环境中定义。但是:你没有(我重复:你没有)希望客户端的IP作为表单的
操作的url。好的,我不理解您的所有响应。