我正在使用TcpClient作为字节数组从远程登录服务器读取数据,并使用ASCII码将数据转换为字符串,即:
int size;
byte[] buf;
tcpclient.Read(buf,0,MAX_BUFFER_SIZE);
string resp = new System.Text.ASCIIEncoding().GetString(fullBuffer, 0, fullBuffer.Length);
并使用读取的字节进行buf
。我想在buf
中提取(稍后回答) IAC命令,而不是将它们放在resp
中。你有没有一个有效的建议方法。
我首先想到的是:在resp
中找到"\0xFF“字符串(a)如果后面跟着"\0xFF",则将"\0xFF\0xFF”替换为"\0xFF“(b)如果不是,则提取后面的字节作为IAC并回答。resp.Remove()
两个字符。
这是一个有效的解决方案吗?你建议在ASCII层解决这个问题吗(有没有办法让byte[]
中的一些值被byte[]
编码器忽略?)或者在编码成string
之后
发布于 2012-12-22 01:32:43
我首先想到的是:在resp (a)中找到"\0xFF“字符串,如果后面是"\0xFF",则将"\0xFF\0xFF”替换为"\0xFF“(b)如果不是,则提取后面的字节作为IAC
answer。resp.Remove()两个字符。
A部分是可行的,但b部分是欠缺的。有几个命令的长度超过2个字节。您将不得不做更多的工作,并确定每个命令应该消耗多少字节。例如,SB命令将包含可变数量的字节,这取决于子选项是什么。
https://stackoverflow.com/questions/13994551
复制相似问题