我制作了一个简单的套接字serer脚本和一个客户端脚本。
如果我在同一个项目中运行这两个脚本没有问题,但如果我从Unity3D游戏引擎运行客户端脚本没有连接,控制台说我需要一个Crossdomain策略。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//using System.Threading.Tasks;
using System.Net;
using System.Net.Sockets;
namespace SocketServer
{
class Program
{
static byte[] Buffer { get; set; }
static Socket sck;
static void Main(string[] args)
{
sck = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
sck.Bind(new IPEndPoint(0, 5111));
sck.Listen(100);
Socket accepted = sck.Accept();
Buffer = new Byte[accepted.SendBufferSize];
int bytesRead = accepted.Receive(Buffer);
byte[] formatted = new byte[bytesRead];
for (int i = 0; i < bytesRead; i++)
{
formatted[i] = Buffer[i];
}
string strData = Encoding.ASCII.GetString(formatted);
Console.Write(strData + "\r\n");
Console.Read();
sck.Close();
accepted.Close();
}
}
}
答案 0 :(得分:1)
如果您的统一构建设置是网络播放器,那么您将收到跨域策略错误。另一方面,桌面/独立构建设置应该没有跨域策略问题。您可以使用Unity standalone和Raknet(用于套接字)实现套接字实现。我已经实现了它,可以像socket一样进行通信。这是文档链接http://www.jenkinssoftware.com/raknet/manual/detailedimplementation.html