C# 处理TcpClient.Read()中的IAC字节
我正在使用TcpClient作为字节数组从Telnet服务器读取数据,并使用ASCII编码器将其转换为字符串,即:C# 处理TcpClient.Read()中的IAC字节,c#,buffer,bytearray,ascii,tcpclient,C#,Buffer,Bytearray,Ascii,Tcpclient,我正在使用TcpClient作为字节数组从Telnet服务器读取数据,并使用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命令,而不是将它们
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并回答<代码>相应删除()两个字符
这是一个有效的解决方案吗?您建议在byte[]
级别(是否有办法在byte[]
中设置一些被ASCII编码器忽略的值)或在编码为字符串后解决此问题
我首先想到的是:在resp(a)中找到“\0xFF”字符串,如果后跟“\0xFF”,则将“\0xFF\0xFF”替换为“\0xFF”(b),如果没有,则将后跟的字节提取为IAC并回答。resp.Remove()两个字符
a部分可行,但b部分不足。有几个命令由2个以上字节组成。您需要做更多的工作,并确定每个命令应该消耗多少字节。例如,根据子选项的不同,SB命令将包含可变的字节数