TCPClient不会从自定义类连接

时间:2015-11-04 08:29:50

标签: c# multithreading unity3d tcpclient

我在Unity 5.2.0f3 64Bits上面临一个非常奇怪的问题。当我为Installing package into ‘C:/Users/Marc/Documents/R/win-library/3.2’ (as ‘lib’ is unspecified) Warning message: ackage ‘iris’ is not available (for R version 3.2.2) 连接创建自己的自定义类时,这个连接永远不会连接。这是我的简单课程:

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) { } } 继承的自定义类,因为它的想法是在不同的线程上运行。当我执行Unity应用程序时,类实例已正确创建并执行(带有/出线程,这是两个相同的行为)。

当流程遇到MonoBehaviour时会触发client.BeginConnect(),但AsyncCallback()仍然是假的。
当我用client.connected替换client.BeginConnect()时,进程将挂起,当它不在另一个线程中执行时,Unity框架就会转储。 (没有回应)

我首先在.Net 2012上开发了这个类,可以执行所有预期的结果(没有错误)。

编辑:
当我在client.Connect()中创建并运行TcpClient.Connect()时,MonoBehaviour已连接到我的服务器,但这对我来说不是一个解决方案,因为它会返回大量数据。< / p>

有人遇到过这类问题吗?

1 个答案:

答案 0 :(得分:0)

该问题的解决方法是创建一个正常的统一C#脚本,将整个客户端代码放在那里 Unity仍然是错误的,因为第一次复制代码时,它无法正常工作,但在其中注释/工作(复制RunClient()的代码)......