【发布时间】:2014-03-26 17:00:59
【问题描述】:
我正在尝试让客户端能够输入服务器的 IP 地址/端口并连接到它。为此,我需要服务器的公共 IP 地址/端口。有没有好的方法来做到这一点?到目前为止我尝试过的是......
ip_address = urllib.request.urlopen(<my web server>).read()
Web 服务器只包含 php 脚本:
<?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 地址和端口。不用说,这是行不通的。
【问题讨论】:
-
那么你需要你的公共IP还是一些外部服务器的?关于您在管道的哪一侧进行操作的问题有点令人困惑。
-
我需要我的 IP 地址。
-
我确实是服务器。我在听,但我不知道哪里出了问题。
-
发布更多我感到困惑的代码。
标签: python networking