###環境
OS X Yosemite
Unity 5.3.5f1 Personal
###前提・実現したいこと
Unityを用いたUDP送信は実現できています.
コマンドライン上での
echo 'hello' | nc -u 192.168.5.1 22222 sudo tcpdump -A port 22222
では,正常に通信ができています.
Unityの受信プログラムはUnityでUDPを受信してみるを使用しています.
using UnityEngine; using System.Collections; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; public class UDPReceive : MonoBehaviour { int LOCA_LPORT = 22222; static UdpClient udp; Thread thread; void Start () { udp = new UdpClient(LOCA_LPORT); udp.Client.ReceiveTimeout = 1000; thread = new Thread(new ThreadStart(ThreadMethod)); thread.Start(); } void Update () { } void OnApplicationQuit() { thread.Abort(); } private static void ThreadMethod() { while(true) { IPEndPoint remoteEP = null; byte[] data = udp.Receive(ref remoteEP); string text = Encoding.ASCII.GetString(data); Debug.Log(text); } } }
また,高速UDP受信 in Unityも試しました.
###発生している問題
UnityがUDPを受信していない.
「byte[] data = udp.Receive(ref remoteEP);」で止まっている.
ご教授よろしくお願いいたします.
###追記
Debug.Logで確認したところUDPReceiveのStartには入っています.
UnityのConsoleではWarningやErrorは出力されていません.
ポートの状態はこのような感じです.
$ lsof -i -nP | grep 22222 Unity 98222 User 240u IPv4 0xa1623638c2578339 0t0 UDP *:22222 $ netstat -ant | grep 22222 udp4 22 0 *.22222 *.*
また,UDP受信プログラムとUDP送信プログラムを混在させた状態のUnityでUDPを送信するとUnityのConsoleに
SocketException: Connection refused System.Net.Sockets.Socket.Send (System.Byte[] buf, Int32 offset, Int32 size, SocketFlags flags) System.Net.Sockets.UdpClient.DoSend (System.Byte[] dgram, Int32 bytes, System.Net.IPEndPoint endPoint) UnityEngine.EventSystems.EventSystem:Update()
と出ます.これはUDP受信が設定できていないということでしょうか.

回答2件
あなたの回答
tips
プレビュー