我正在尝试为客户端创建输入服务器的IP地址/端口并连接到它的能力。为此,我需要服务器的公共IP地址/端口。有没有办法做到这一点?到目前为止我尝试过的是......
ip_address = urllib.request.urlopen(<my web server>).read()
只有包含php脚本的Web服务器:
<?php echo $_SERVER["REMOTE_ADDR"]?>
只需存储
中的端口s.bind(('', port))
连接到此IP地址和端口超时。有更好的方法吗?
编辑: 好吧基本上我正在尝试通过互联网建立连接,而不知道我的路由器将要做什么。如有必要,我可以使用带有任何代码的网络服务器,因为我可以访问永久网站空间。这就是我现在所拥有的。
服务器:
import urllib.request
import threading
import socket
socket_list = []
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('', 0))
s.listen(10)
def listener(socket):
while(1):
data = socket.recv(1024)
print (data)
def accepter():
while(1):
socket, addr = s.accept()
socket_list.append(socket)
threading.Thread(target = listener, args = (socket,)).start()
ip_address = (urllib.request.urlopen("<MY WEB SERVER HERE>").read()).decode('utf-8')
print (ip_address)
print (s.getsockname()[1])
threading.Thread(target = accepter, args = ()).start()
客户端:
import socket
print ("Enter IP Address")
ip_address = input()
print ("Enter Port")
port = int(input())
s2 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s2.connect((ip_address, port))s2.send("Connected!")
s2.close()
当我运行客户端时,我正在输入服务器输出的IP地址和端口。不用说,这不起作用。
答案 0 :(得分:1)
我认为这是一个很好的问题,你可以这样做,如果你不想像你一样设置你的服务器:
""" Easy IP Getter """
import json
import urllib2
info = json.loads(urllib2.urlopen("http://jsonip.com").read())
ip = info["ip"]
print ip
这取决于外部服务但不是最好的,如果他们停止工作你就会停止工作。