我在Unity 5.2.0f3 64位上遇到了一个相当奇怪的问题。当我为TcpClient
连接创建自己的自定义类时,此连接永远不会连接。这是我简单的类:TCPClient将不会连接自定义类
protected override void StartClient(string mod, string ip)
{
RunClient(ip, mod);
}
private ManualResetEvent connectDone = new ManualResetEvent(false);
private void connect_done(IAsyncResult ar)
{
connectDone.Set();
}
private void RunClient(string ip_host_name, string mode)
{
try
{
TcpClient client = new TcpClient();
client.BeginConnect(IPAddress.Parse(ip_host_name), 6666, new AsyncCallback(connect_done), client);
connectDone.WaitOne();
//Console.WriteLine("Connected");
SslStream lv_ssl_stream = new SslStream(client.GetStream(), false,
new RemoteCertificateValidationCallback(ValidateServerCertificate), null);
if (authenticate_server(lv_ssl_stream, client))
{
}
else
{
// Console.WriteLine("\nCouldn't authenticate the server");
}
client.Close();
}
catch (Exception e)
{
}
}
这是不从MonoBehaviour
继承,因为当时的想法是它在不同的线程运行一个自定义类。当我执行Unity应用程序时,类实例被正确地创建并执行(使用/ out Thread,它的行为都是相同的)。
当进程遇到client.BeginConnect()
AsyncCallback()
被解雇,但client.connected
仍然是错误的。
当我用client.Connect()
替换client.BeginConnect()
时,进程将挂在那里,当它不在另一个线程中执行时,Unity框架只会转储。 (Not Responding)
我在.Net 2012上开发了这个类,并且可以用所有预期的结果(无错)执行它。
编辑:
当我创建并运行在MonoBehaviour
TcpClient.Connect()
,在TcpClient
被连接到我的服务器,但它的很多数据中的哪一个被退回,这不是我一个解决方案。
有人遇到过这种类型的问题吗?