字符串操作跟不上套接字
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://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
我这里有一个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://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