Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 处理TcpClient.Read()中的IAC字节_C#_Buffer_Bytearray_Ascii_Tcpclient - Fatal编程技术网

C# 处理TcpClient.Read()中的IAC字节

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命令,而不是将它们

我正在使用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命令,而不是将它们放在
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命令将包含可变的字节数