我想做一个使用 SSL/TLS 的协议分析,幸运的是我可以安装自己的证书,DNS 部分不会成为问题。我的问题是我用什么来做到这一点。我考虑过使用 paros,但它会比它的价值更麻烦。所以我想我可以写两个 C# 应用程序。第一个是伪服务器,另一个是伪客户端。两者之间都有一个tcp连接,然后我可以使用wireshark。问题是,我对流的经验很少。因此,如果有人可以向我指出有用的文章,或者如果代码很短,那么一个示例会很棒。提前谢谢你。
问问题
323 次
1 回答
2
对流进行读/写并不难,你不能只连接流,你需要有自己的代码来做到这一点。最好在它自己的线程上(或工作进程或任务或您需要的任何线程概念)。
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();
}
}
基本上 Streams 对字节数组进行操作。当我们运行这一行时:
while((bytesRead = inStream.Read(buffer, 0, 1024)) != 0)
我们基本上是在说,执行Read
,inStream
将读取的字节放入buffer
索引处0
(在缓冲区中)并读取最大1024
字节数。
然后我们将返回值分配给bytesRead
读取的实际字节数(在这种情况下) 0
,1024
如果不等于 0,则继续循环。
然后我们简单地将它写回outStream
包含数据的缓冲区和实际读取的字节数。我们执行刷新以实际强制输出输出而不是堆积在内部缓冲区中。
当流到达 EOF 时,.Read
将返回 0,循环将退出,您可以继续。这就是您在最简单的级别上“连接”两个流的方式。
于 2012-11-24T01:05:41.203 回答