字符串操作跟不上套接字

String manipulation can't keep up with sockets

我这里有一个TELNET SERVER,这个USSR Vessel v1.0程序是客户端,它会连接到telnet服务器,telnet服务器SPAMS,我的意思是向客户端发送数据非常快。

(好吧,最初的 telnet 服务器是一个微控制器,它读取 5 个传感器并将数据发送回客户端,所以这应该比我用作替代品的 C# 程序 telnet 服务器慢很多)

问题是这样的,我使用正则表达式来拆分来自服务器的字符串。

字符串应该是这样的:Q0.00W0.10X0.30Y0.44Z99.00,你看,我擦掉了Q/W/X/Y/Z,然后把值存储在一个字符串数组中,然后打印出来分成 5 个标签,但出现此错误,请参见下面的屏幕截图。我添加了一个大文本框用于调试目的。请参阅我的代码,通过 telnet 接收字符串:

public void OnAddMessage(string sMessage) 
{
    //Q0.00W0.10X0.30Y0.44Z99.00 
    string[] lines = Regex.Split(sMessage, "\r\n"); 
    foreach (string line in lines)
    {
        Console.WriteLine(line); 
        valuesStr[ctr2] = line; 
        ctr2++; 
    }

    ctr2 = 0; 
    m_lbRecievedData.Items.Add(sMessage); 
    tempVal.Text = valuesStr[4]+ "°C"; 
    frontVal.Text = valuesStr[0]; 
    backVal.Text = valuesStr[1]; 
    leftVal.Text = valuesStr[2]; 
    rightVal.Text = valuesStr[3];
}

您的问题需要进一步说明您想要什么。就目前而言,代码没有做任何事情来完成你声称它正在做的事情,即 "erasing the Q/W/X/Y/Z and then store the values in a string array"。

尽管如此,还是尝试解决问题中的问题:

using System.Text.RegularExpressions;

private Regex regex = new Regex("[QWXYZ]");

private void OnAddMessage(string message)
{
    using (StringReader sr = new StringReader(message))
    {
        string line;

        while ((line = sr.ReadLine()) != null)
        {
            string[] splitContents = regex.Split(line);

            //do something with the parsed contents ...
        }
    }
}

尝试 Micro Framework 中的 RegEx 实现

http://netmf.codeplex.com/

这是解释它的网络广播!

http://channel9.msdn.com/coding4fun/blog/Net-Micro-Framework-v42-RTWs

它可以说更好,因为它允许您匹配一段明确的时间,然后从您离开的地方继续……这在默认情况下使用 Full Fx 是不容易实现的。

http://www.codeproject.com/Articles/386890/String-Manipulation-in-the-NET-Micro-Framework