在TcpClient.Read()中处理IAC字节
本文关键字:处理 IAC 字节 TcpClient Read | 更新日期: 2023-09-27 17:49:16
我正在从Telnet服务器读取数据,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
(a)中找到"'0xFF"字符串,如果后面跟着"'0xFF",将"'0xFF'0xFF"替换为"'0xFF"(b),如果不提取后面的字节作为IAC和答案。resp.Remove()
两个字符。
这是一个有效的解决方案吗?您是否建议在byte[]
级别解决它(是否有办法在byte[]
中有一些值被ASCII编码器忽略?)或编码为string
后?
首先想到的是:在resp (a)中找到"'0xFF"字符串,如果后面跟着"'0xFF",用"'0xFF"(b)替换"'0xFF'0xFF",如果不提取后面的字节作为IAC和答案。. remove()两个字符
a部分可以,但b部分缺少。有几个命令的长度超过2字节。您将不得不做更多的工作,并确定每个命令应该消耗多少字节。例如,SB命令将包含可变字节数,这取决于子选项是什么。