1

我使用 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 接收服务器计算机发送的数据包?

(对不起,我的英语不好,我知道)。

4

1 回答 1

1

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

于 2013-04-02T15:30:46.683 回答