TCP客户端 - 设置超时C#CF 3.5

时间:2014-02-18 08:35:56

标签: c# compact-framework tcpclient connection-timeout

我的移动射频终端配有Windows CE 6.0 CF 3.5,我需要尽快将数据发送到我的服务器。 问题是wifi连接不够稳定而不是使用。 当连接因异常中止而重复发送时,我减少了数据丢失。但是例外的时间是~21秒,这对我来说太长了。重复连接是成功的(大多数情况下),但我需要缩短异常时间,或找到不同的连接方法。

对于数据接收,终端中有TCP服务器。在这里,我有一个带有计时器的线程,在我超时后,我关闭客户端(TcpClient)并从中捕获异常:-)。但我的意思是这种方法并不理想。

任何想法? 谢谢!

以下是我的TCP客户端连接代码

    internal string TCPsend(string strMessage)
    {
        string exception = string.Empty;
        TcpClient client = null;
        try
        {
            client = new TcpClient(IPServer, PortServer);
            client.SendTimeout = 500;                        //no effect
            Stream stream = client.GetStream();
            StreamWriter strWriter = new StreamWriter(stream);
            strWriter.Write(strMessage);
            strWriter.Close();
        }
        catch (Exception ex)
        {
            exception = ex.ToString();
            utility.SaveExceptionLog("SendTCP A: " + ex.ToString());
        }
        finally
        {
            if (client != null)
            {
                client.Close();
            }
        }
        return exception;
    }

1 个答案:

答案 0 :(得分:0)

如果您想将连接检查交到您的手中,可能您应该打开新线程,在那里您将检查已建立连接的循环。

以下是琐碎检查的答案:What is the best way to check for Internet connectivity using .NET?

这会影响整体发送效果,但应减少等待时间。