QA@IT

VirtualBOXでNATのポートフォワーディングを使ってUDP通信がしたい

28954 PV

環境

VirtualBOX 5.0.8 r103449
Vagrant 1.7.4
ホストOS:OS X Yosemite
ゲストOS:Ubuntu 14.04.3 LTS (64bit)
Unity 5.0.1f1 Personal

実現したいこと

ホストOSで起動しているUnityからゲストOSへUDP通信をしたいです.
(TCP通信のやり方もおしえてくださるとありがたいです.)
vagrant sshでは正常に接続できています.

やったこと

  • UnityのUDP通信プログラム
using UnityEngine;
using System.Net.Sockets;
using System.Text;
using System.Collections;

public class UDPClient : MonoBehaviour
{
    // broadcast address
    public string host = "127.0.0.255";
    public int port = 3333;
    private UdpClient client;

    public Vector3 position;

    void Start ()
    {
        client = new UdpClient();
        client.Connect(host, port);
    }

    void Update ()
    {
    }

    void OnGUI()
    {
        position = Input.mousePosition;
        position.z = 10;

        byte[] dgram = Encoding.UTF8.GetBytes(position.ToString());
        client.Send(dgram, dgram.Length);
    }

    void OnApplicationQuit()
    {
        client.Close();
    }
}
  • Vagrantfileに以下のコードを追加 config.vm.network :forwarded_port, guest: 3333, host: 3333, protocol: "udp"
  • VirtualBOXのネットワーク設定にて割り当てをNATに,ポートフォワーディングを以下の通りに設定 プロトコル:UDP,ホストポート:3333,ゲストポート:3333(ポートは33333なども試したがダメ)

発生している問題

sudo tcpdump port 3333

を実行して確認したところ,ホストOSでは正常に受信できているがゲストOSで受信できていない.

ご協力よろしくお願いします.

  • 宛先が127.0.0.255になっていますが、これは127.0.0.1ではだめだったからですか?ちなみにブロードキャストなら127.255.255.255ですが、localhostへのブロードキャストはできなさそうな気がします。 -
  • 127.0.0.1で出来ました.ありがとうございます.
    ネットワークの勉強もしてみます.
    -

回答

Unityのプログラムで宛先を127.0.0.1にすることで解決しました.

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。