【问题标题】:Compare a string read by network stream比较网络流读取的字符串
【发布时间】:2012-04-28 20:07:27
【问题描述】:

我正在编写一个请求用户输入命令的 telnet 管理系统。

我可以使用网络流从套接字读取它,但是当我将字符串与另一个字符串进行比较时,我无法匹配,我尝试了正则表达式..

这是我的代码:

while (!bit.Contains("\r") && !bit.Contains("\n") && !bit.Contains("."))
{
    bit = Encoding.ASCII.GetString(buffer);
    outputString += bit;
    stream.Read(buffer, 0, 1);
}

 // Read till user input ENTER

if ( outputString == "$edit" )
     // do something

【问题讨论】:

  • 当用户点击Enter 后,您是否通过调试查看outputString 包含的内容?
  • 是的,如果用户在调试中输入“编辑”,我已经调试过了。 outputString 有“编辑”,但 if 语句无法比较。
  • 好吧,"edit" != "$edit"。它们是不同的字符串。
  • 很好的回应。您提供了一个与您的代码不一致的示例,当指出这一点时,您所能想到的回应就是亵​​渎和侮辱。这在 Stack Overflow 上是不可接受的行为。我建议你冷静下来,长大成人,开始以尊重和礼貌的态度对待寻求帮助的人。一方面,我不会再费心去帮助你了。

标签: c# sockets stream


【解决方案1】:

很明显,你必须移动循环的第一行:

// init bit variable here
while (!bit.Contains("\r") && !bit.Contains("\n") && !bit.Contains("."))
{
    outputString += bit;
    stream.Read(buffer, 0, 1);

    bit = Encoding.ASCII.GetString(buffer);
}

【讨论】:

  • 我不明白你的意思,但该代码对我不起作用。
  • 告诉我你是如何初始化位变量的?例如,如果您在循环之前声明了char bit = 0;,这就是您的问题的根源。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-14
  • 2017-08-20
  • 2019-09-20
  • 2013-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多