0

我想做一个使用 SSL/TLS 的协议分析,幸运的是我可以安装自己的证书,DNS 部分不会成为问题。我的问题是我用什么来做到这一点。我考虑过使用 paros,但它会比它的价值更麻烦。所以我想我可以写两个 C# 应用程序。第一个是伪服务器,另一个是伪客户端。两者之间都有一个tcp连接,然后我可以使用wireshark。问题是,我对流的经验很少。因此,如果有人可以向我指出有用的文章,或者如果代码很短,那么一个示例会很棒。提前谢谢你。

4

1 回答 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)

我们基本上是在说,执行ReadinStream将读取的字节放入buffer索引处0(在缓冲区中)并读取最大1024字节数。

然后我们将返回值分配给bytesRead读取的实际字节数(在这种情况下) 01024如果不等于 0,则继续循环。

然后我们简单地将它写回outStream包含数据的缓冲区和实际读取的字节数。我们执行刷新以实际强制输出输出而不是堆积在内部缓冲区中。

当流到达 EOF 时,.Read将返回 0,循环将退出,您可以继续。这就是您在最简单的级别上“连接”两个流的方式。

于 2012-11-24T01:05:41.203 回答