一位同事和我在运行几乎相同的 Windows 7 安装的相同硬件上具有相同的代码。我们都使用 Unity3d 中的 C#,以及unity3d-tuio包的最新 SVN 检查。TUIO 是一种基于开放声音控制的 UDP 协议,用于发送有关触摸屏交互的数据。在我的机器上,该应用程序在我第一次运行时运行良好(尽管启动时有一个奇怪的约 5 秒延迟),但任何后续启动该应用程序时,它都会引发以下异常:
SocketException: Only one usage of each socket address (protocol/network address/port) is normally permitted.
System.Net.Sockets.Socket.Bind (System.Net.EndPoint local_end)
System.Net.Sockets.UdpClient.InitSocket (System.Net.EndPoint localEP)
System.Net.Sockets.UdpClient..ctor (System.Net.IPEndPoint localEP)
Tuio.TuioTracking.Start () (at Assets/Plugins/MindstormTuio/Scripts/TuioReceiver/TuioTracking.cs:70)
UnityEngine.Debug:LogException(Exception)
对于我的同事来说,启动时没有奇怪的延迟,并且应用程序可以根据需要重新启动多次而不会产生不良影响。
如果我netstat -a -n -o
在我的机器上运行,我会看到一个 UDP 连接 -- UDP 0.0.0.0:3333 *:* 6088
-- 即使在应用程序和 Unity 编辑器退出后也是打开的。我tasklist /F "PID EQ 6088"
在第一次运行应用程序时确定了 PID(在本例中为 6088)是 Unity.exe(Unity 编辑器)。似乎第一次执行该应用程序时,Unity.exe 会抓取端口 3333 并且不会释放它。即使在退出 Unity 编辑器后,该UDP 0.0.0.0:3333 *:* 6088
条目也会出现在 netstat 中。
似乎是我的开发机器特有的配置问题,因为我同事的机器没有显示它。
任何想法哪些配置问题可能导致此问题?