客户端尝试连接到未运行的C#服务器时,Unity冻结

黑虫

我正在使用客户端-服务器拱创建一个简单的统一应用程序。只要打开服务器,我的应用程序就可以正常工作。如果偶然在服务器未运行时尝试运行客户端,则统一应用程序冻结。

我还按照各种帖子中的建议使用了连接超时,但是没有帮助。

void Awake () {
        init ();    
    }
void init() {
        IPEndPoint endpoint = new IPEndPoint(IPAddress.Parse (serverHost), serverPort);
        client = new Socket (endpoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
        try {
            client.SendTimeout = 1000;
            client.ReceiveTimeout = 1000;
            client.Connect (endpoint);
            error = "";
        } catch(Exception e) {
            error = e.Message;
            new WaitForSeconds(1);
        }

任何建议可能会受到欢迎。

谢谢。

程序员

您的客户端冻结了,因为套接字阻塞了。连接超时也无法解决此问题。

我知道有2种方法可以解决此问题。

  1. 第一种方法是使用Thread调用包含网络代码的函数,以使其不会冻结。

  2. 第二种方法是使用异步套接字https://msdn.microsoft.com/zh-CN/library/fx6588te(v=vs.110).aspx

我将提供第一种方法的示例,因为我认为这更容易。

我没有您所有的代码,所以我将尽我所能。

将您的代码更改为

using System;
using System.Threading;

bool connected = false;

void init() {

    // Create a new Thread
    new Thread (() =>
    {
        IPEndPoint endpoint = new IPEndPoint(IPAddress.Parse (serverHost), serverPort);
        client = new Socket (endpoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
        try {
            client.SendTimeout = 1000;
            client.ReceiveTimeout = 1000;
            client.Connect (endpoint);
            error = "";
            connected = true;

        } catch(Exception e) {
            connected = false;
            error = e.Message;
            new WaitForSeconds(1);
        }
    }).Start(); // Start the Thread
}   

这将创建一个新线程并启动该线程。在该线程内,它将套接字连接代码而不会阻塞您的应用程序。

然后,您可以稍后检查是否已连接到服务器

if(connected){
    // ...
}

确保包括在内using System.Threading

如果您打算从服务器接收数据,请确保也执行同样的操作,否则它将阻止并挂起您的应用程序。

您在接收功能中要做的就是添加:

new Thread (() =>
{
    // .....You receiving code here
}).Start();

您可以在此处了解有关线程的更多信息http://www.albahari.com/threading/

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何了解客户端是否在C#中连接到服务器?

来自分类Dev

Qt客户端-连接到C服务器

来自分类Dev

命名管道客户端无法连接到以网络服务运行的服务器

来自分类Dev

当websocket客户端连接到服务器时出现SockJsException

来自分类Dev

hazelcast客户端无法连接到服务器

来自分类Dev

连接到服务器时hazelcast客户端异常

来自分类Dev

尝试从aSmack Android客户端连接到XMPP服务器时出现ConnectionException

来自分类Dev

尝试将数据写入客户端时,C#中的简单套接字服务器意外关闭连接

来自分类Dev

C#通用Windows StreamSocket客户端未连接到StreamSocketListener服务器

来自分类Dev

Socket.io客户端未连接到服务器

来自分类Dev

Hbase客户端未连接到本地hbase服务器

来自分类Dev

通过特定客户端连接到centos服务器时出错

来自分类Dev

Jetty Java Websocket客户端未连接到服务器

来自分类Dev

我的TCP客户端未连接到我的TCP服务器

来自分类Dev

表示http客户端连接到服务器,https客户端无法连接到服务器

来自分类Dev

从RSocket-Java客户端连接到Spring Boot RSocket服务器时出错

来自分类Dev

Spring Cloud Config:客户端不会尝试连接到配置服务器

来自分类Dev

Apache Ignite,C#:瘦客户端无法连接到服务器节点

来自分类Dev

命名管道客户端无法连接到以网络服务运行的服务器

来自分类Dev

从客户端C#连接到多个TCP服务器

来自分类Dev

从客户端连接到基于Sails的服务器

来自分类Dev

尝试将数据写入客户端时,C#中的简单套接字服务器意外关闭连接

来自分类Dev

每当它尝试连接到我的python套接字服务器时,我的简单客户端崩溃

来自分类Dev

客户端尝试连接到未运行的C#服务器时,Unity冻结

来自分类Dev

将客户端连接到服务器,并在C#中从中获取文本文件

来自分类Dev

SignalR 从服务器连接到客户端

来自分类Dev

Android 客户端无法连接到 C# MQTT 服务器,错误代码 32103

来自分类Dev

C# 客户端在与 C++ 服务器连接时停止,但在与 C# 服务器连接时工作正常

来自分类Dev

winsock 客户端反复尝试连接到服务器

Related 相关文章

  1. 1

    如何了解客户端是否在C#中连接到服务器?

  2. 2

    Qt客户端-连接到C服务器

  3. 3

    命名管道客户端无法连接到以网络服务运行的服务器

  4. 4

    当websocket客户端连接到服务器时出现SockJsException

  5. 5

    hazelcast客户端无法连接到服务器

  6. 6

    连接到服务器时hazelcast客户端异常

  7. 7

    尝试从aSmack Android客户端连接到XMPP服务器时出现ConnectionException

  8. 8

    尝试将数据写入客户端时,C#中的简单套接字服务器意外关闭连接

  9. 9

    C#通用Windows StreamSocket客户端未连接到StreamSocketListener服务器

  10. 10

    Socket.io客户端未连接到服务器

  11. 11

    Hbase客户端未连接到本地hbase服务器

  12. 12

    通过特定客户端连接到centos服务器时出错

  13. 13

    Jetty Java Websocket客户端未连接到服务器

  14. 14

    我的TCP客户端未连接到我的TCP服务器

  15. 15

    表示http客户端连接到服务器,https客户端无法连接到服务器

  16. 16

    从RSocket-Java客户端连接到Spring Boot RSocket服务器时出错

  17. 17

    Spring Cloud Config:客户端不会尝试连接到配置服务器

  18. 18

    Apache Ignite,C#:瘦客户端无法连接到服务器节点

  19. 19

    命名管道客户端无法连接到以网络服务运行的服务器

  20. 20

    从客户端C#连接到多个TCP服务器

  21. 21

    从客户端连接到基于Sails的服务器

  22. 22

    尝试将数据写入客户端时,C#中的简单套接字服务器意外关闭连接

  23. 23

    每当它尝试连接到我的python套接字服务器时,我的简单客户端崩溃

  24. 24

    客户端尝试连接到未运行的C#服务器时,Unity冻结

  25. 25

    将客户端连接到服务器,并在C#中从中获取文本文件

  26. 26

    SignalR 从服务器连接到客户端

  27. 27

    Android 客户端无法连接到 C# MQTT 服务器,错误代码 32103

  28. 28

    C# 客户端在与 C++ 服务器连接时停止,但在与 C# 服务器连接时工作正常

  29. 29

    winsock 客户端反复尝试连接到服务器

热门标签

归档