我开始研究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/