远程UDP套接字不接收数据包

时间:2013-04-02 00:17:20

标签: ruby sockets udp

我用udp套接字编程创建了两个文件,一个发送和其他接收,我确实把接收到的文件放在另一台计算机上与不同的提供商,我执行了发送器,接收器后,我确实看到接收器没有收到否数据包,ip配置没问题,发送方发送到接收方IP和端口,有些人说我需要打开" udp端口,但MMORPG游戏使用这种策略,这是必要的吗?接收器在您的IP和定义端口上执行Bind(),请参阅代码。

发信人:

begin
    sender = UDPSocket.new()
    host   = "10.100.1.115"
    port   = 3001
  while true
    p "Enviando..."
    sender.send("Numero #{10}",0,host,port)
    sleep 0.1
  end
  rescue
    p $!
  end
gets

接收器:

begin
    myIP = IPSocket.getaddress(Socket.gethostname) # => 10.100.1.115
    puts "Seu IP => #{myIP}"
    sock = UDPSocket.new()
    sock.bind(myIP,3001)
    puts "#=========================#"
    puts "....Esperando Pacotes....."
    puts "#=========================#"
    while true
     line = sock.recvfrom(1024)
     puts "Recebido : #{line}"
    end
  rescue
    p $!
  end
  gets

有什么不对吗?我需要使用NAT?如果是的话,我怎么用?通用策略用于游戏开发者制作客户端套接字udp由服务器计算机接收发送数据包的内容是什么?

(抱歉,我的英语很糟糕,我知道)。

1 个答案:

答案 0 :(得分:1)

如果另一台计算机位于路由器或NAT后面,则必须在路由器上进行配置,以将数据包转发到实际计算机。