我想做一个使用SSL/TLS的协议分析。幸运的是,我可以安装自己的证书,DNS部分不会成为问题。我的问题是我用什么来做这件事。我曾考虑过使用帕罗斯,但这会带来更多的麻烦。所以我想我可以写两个C#应用程序。第一个是伪服务器,另一个是伪客户端。两者之间都有一个tcp连接,然后我可以在上面使用wireshark。问题是,我对流几乎没有经验。因此,如果有人能给我介绍一些有用的文章,或者如果代码很短,那么一个示例就太好了。提前谢谢。
对流进行读/写并不难,你不能只连接流,你需要有自己的代码才能做到这一点。最好是在它自己的线程上(或工作进程或任务,或您需要的任何线程概念)。
public void ConnectStreams(Stream inStream, Stream outStream)
{
byte[] buffer = new byte[1024];
int bytesRead = 0;
while((bytesRead = inStream.Read(buffer, 0, 1024)) != 0)
{
outStream.Write(buffer, 0, bytesRead);
outStream.Flush();
}
}
基本上,流在字节数组上操作。当我们运行这条线路时:
while((bytesRead = inStream.Read(buffer, 0, 1024)) != 0)
我们基本上是说,在inStream
上执行Read
,将读取的字节放入buffer
,索引为0
(在缓冲区中),并读取最大1024
字节。
然后,我们将返回值分配给bytesRead
,这是读取的实际字节数(在这种情况下,在0
和1024
之间),如果不等于0,则继续循环。
然后,我们简单地将它写回outStream
,其中的缓冲区包含数据和实际读取的字节数。我们执行一个刷新来实际强制输出,而不是在内部缓冲区中堆叠。
当流到达EOF时,.Read
将返回0,循环将退出,您可以继续。这就是如何在最简单的级别上"连接"两个流。