【发布时间】:2013-11-18 14:56:43
【问题描述】:
我制作了一个简单的网络应用程序,它是通过 LAN 进行通信的服务器客户端。
客户
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = socket.gethostname()
port = 8080
s.connect(("117.219.195.10", port))
s.send('q\n');
s.send('boo\n\r');
s.close
服务器
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = socket.gethostname()
print host
port = 8080
s.bind(("", port))
s.listen(5)
while True:
c, addr = s.accept()
print 'Got connection from', addr
c.send('Thank you for connecting\r\n')
c.close()
但是当服务器在 NAT 后面时,我需要在路由器中配置 NAT 表,我可以在不配置路由器的情况下进行点对点连接吗?我可以在数据包本身中嵌入 NAT 表的信息(例如要重定向的 ip),以便当数据包从互联网到达路由器时,它知道 LAN 中的哪个 ip 应该得到它。
【问题讨论】:
-
有一些像UDP打孔这样的技术
-
好吧,如果你知道的话,那就去使用它。无论如何,这不是关于编程的,所以这里离题了。
-
可能是也可能不是我不确定这就是我的问题中没有编程标签的原因:)
-
为什么不在服务器端配置路由器?
-
对于最终用户应用程序,您不需要做什么,该应用程序应该开箱即用(如Skype),并且在我的应用程序中我不希望数据通过任何服务器
标签: networking tcp udp network-protocols tcp-ip