我在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
被連接到我的服務器,但它的很多數據中的哪一個被退回,這不是我一個解決方案。
有人遇到過這種類型的問題嗎?