字符串操作无法跟上套接字

时间:2015-02-12 23:29:55

标签: c# regex winforms 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接收字符串时查看我的代码:

enter image description here

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];
}

2 个答案:

答案 0 :(得分:1)

您的问题需要更多地澄清您想要的内容。就目前而言,代码无法完成您声称要做的事情,即“擦除Q / W / X / Y / Z然后将值存储在字符串数组中”。

尽管如此,这是试图解决问题中的问题:

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 ...
        }
    }
}

答案 1 :(得分:0)

尝试使用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