Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 什么';s Socket.Connect和Socket.BeginConnect之间的不同_C#_Sockets_Unity3d - Fatal编程技术网

C# 什么';s Socket.Connect和Socket.BeginConnect之间的不同

C# 什么';s Socket.Connect和Socket.BeginConnect之间的不同,c#,sockets,unity3d,C#,Sockets,Unity3d,我遇到了一个非常奇怪的问题:当我在unity3d webplayer中使用Socket.Connect()时,遇到了“System.Security.SecurityException:无法连接,因为找不到有效的跨域策略”,但Socket.BeginConnect()没有问题,那么有什么区别呢?Socket.Connect: Socket.BeginConnect 由于文档状态Connect是同步的,这意味着它将阻止当前线程,直到建立连接为止 BeginConnect方法是异步的,这意味着它将在

我遇到了一个非常奇怪的问题:当我在unity3d webplayer中使用Socket.Connect()时,遇到了“System.Security.SecurityException:无法连接,因为找不到有效的跨域策略”,但Socket.BeginConnect()没有问题,那么有什么区别呢?

Socket.Connect:

Socket.BeginConnect

由于文档状态Connect是同步的,这意味着它将阻止当前线程,直到建立连接为止

BeginConnect方法是异步的,这意味着它将在不同的线程中进行连接,并在连接完成时返回通知。它不会阻止您当前的调用线程。你需要打电话给EndConnect

Socket.ConnectAsync将SocketAsyncEventArgs作为参数提供,与BeginConnect提供的3个参数相比,它包含更多的信息。我还知道,ConnectAsync比BeginConnect引入得晚,解决了一些与超时相关的问题(现在记不起讨论的来源)。尽可能使用ConnectAsync(尽管它需要min.NET2.0SP1)

Silverlight中不支持BeginConnect方法(仅支持ConnectAsync),因此如果您打算开发客户端Silverlight应用程序,这可能是另一个问题。

Socket.Connect:

Socket.BeginConnect

由于文档状态Connect是同步的,这意味着它将阻止当前线程,直到建立连接为止

BeginConnect方法是异步的,这意味着它将在不同的线程中进行连接,并在连接完成时返回通知。它不会阻止您当前的调用线程。你需要打电话给EndConnect

Socket.ConnectAsync将SocketAsyncEventArgs作为参数提供,与BeginConnect提供的3个参数相比,它包含更多的信息。我还知道,ConnectAsync比BeginConnect引入得晚,解决了一些与超时相关的问题(现在记不起讨论的来源)。尽可能使用ConnectAsync(尽管它需要min.NET2.0SP1)

Silverlight中不支持BeginConnect方法(仅支持ConnectAsync),因此如果您打算开发客户端Silverlight应用程序,这可能是另一个问题