我正在尝试通过no-ip连接一个简单的 Ruby 客户端-服务器(套接字)
代码:> 服务器
#!/usr/bin/ruby
require 'socket'
puts "Server run..."
server = TCPServer.new('',5000)
while (session = server.accept)
Thread.start do
session.puts "ok"
session.close
end
end
代码:> 客户端
#!/usr/bin/env ruby
require 'socket'
clientSession = TCPSocket.new( "xxx.xxx.xxx.xxx.", 5000)
while !(clientSession.closed?) && (serverMessage = clientSession.gets)
if serverMessage =~/ok/
puts "connect"
end
end
连接:
图表说明
PC1:运行在 5000 端口的 Ruby 服务器
PC2:Ruby 客户端正在运行
ROUTER:映射以将连接重定向到 PC1(服务器)端口 5000
NO-IP:配置为将连接重定向到我的公共 IP(路由器)端口 5000
VPN:来自瑞典的 IP,用于模拟来自WAN的连接
*两台电脑都在本地网络上
第一次测试(绿色箭头)//没有IP的客户端服务器
使用我的公共 IP 和端口 5000 配置客户端
TCPSocket.new( "xxx.xxx.xxx.xxx.", 5000)
PC2运行客户端=>连接到VPN =>连接到ROUTER =>重定向到PC1(服务器)=> PC1响应“ ok ” => 采用相同的方式返回 =>穿上PC2 “ connect ”#工作
第二次测试(蓝色箭头)//在没有客户端的情况下从浏览器测试no-ip
假设这是我的无 IP 地址:test.no-ip.org
PC2从浏览器打开test.no-ip.org =>连接到VPN =>连接到NO-IP =>连接到ROUTER =>重定向到PC1(服务器)=> PC1响应“ ok ” =>采用相同的方式back =>在浏览器上输入“ok”并将test.no-ip-org更改为xxx.xxx.xxx.xxx.:5000 # work
第三次测试(红色箭头)//没有IP的客户端服务器
使用 no-ip 配置客户端
TCPSocket.new ("test.no-ip.org", 80)
PC2运行客户端.....没有任何反应...#不起作用
有任何想法吗?
谢谢。