我开始研究unity3d。我只想在 Unity3D 和 Raspberry Pi 之间发送/接收数据。我为此使用了套接字编程。但是当我尝试连接我的 Raspberry Pi 时,Unity 向我发送错误消息“无法连接,因为没有找到有效的跨域策略”。为什么需要跨域策略。我只想在我的电脑和树莓派之间发送或接收数据。我可以禁用跨域策略请求或如何解决此问题。

public static void StartClient() {
    byte[] bytes = new byte[1024];
    int remotePort = xxxx; // My raspberry port
    try {
        IPHostEntry ipHostInfo = Dns.GetHostEntry("xxx.xxx.xxx.xxx"); //-->> my raspberry IP
        IPAddress ipAddress = ipHostInfo.AddressList[0];
        IPEndPoint remoteEP = new IPEndPoint(ipAddress,remotePort);

        Socket mySocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp );

        try {
            mySocket.Connect(remoteEP);

            print("Socket connected to" + mySocket.RemoteEndPoint.ToString());

            byte[] msg = Encoding.ASCII.GetBytes("This is a test<EOF>");

            int bytesSent = mySocket.Send(msg);

            int bytesRec = mySocket.Receive(bytes);
            print("Echoed test = " + Encoding.ASCII.GetString(bytes,0,bytesRec));

            mySocket.Shutdown(SocketShutdown.Both);
            mySocket.Close();

            }
        catch (ArgumentNullException ane) {
            print("ArgumentNullException : " + ane.ToString());
        }
        catch (SocketException se) {
            print("SocketException : " + se.ToString());
        }
        catch (Exception e) {
            print("Unexpected exception : " + e.ToString());
        }

    }
    catch (Exception e) {
        Console.WriteLine( e.ToString());
    }
}

最佳答案

你不能禁用这个。
是对 WWW 请求和套接字的安全保护。
您需要在您的电脑上授权此连接。
此安全检查的默认端口是 843。

您可以使用安装文件夹/Data/Tools/SocketPolicyServer 中包含的 Unity 示例程序,或者可以让您自己的服务运行监听此端口或包含一个 xml 文件(如果您的 PC 是这样的网络服务器):

<?xml version="1.0"?>
<cross-domain-policy>
   <allow-access-from domain="*" to-ports="1200-1220"/>
</cross-domain-policy>"

关于c# - 如何禁用跨域策略请求?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30970824/

10-10 08:10