我正在处理的 C# .NET Framework 4.5 代码应该允许我通过加密流将文本传输到另一个程序。我创建了两个简单的程序来演示我的问题。EncryptionTestA 是服务器,意味着首先运行。EncryptionTestB 是客户端,打算运行第二个。一旦 EncryptionTestB 连接,它就会通过 CryptoStream 将文本“hello world”传输到另一个程序。至少在理论上。
实际发生的事情没什么。我通过在内部接口上使用 Wireshark 观察数据传输来确认这一点。此代码绝对不会以其现有形式传输任何数据。我能够让它发送“hello world”的唯一方法是在客户端关闭 StreamWriter。这样做的问题是它还关闭了我不想做的底层 TCP 连接。
所以,我的问题是:如何在不关闭底层 TCP 连接的情况下刷新 StreamWriter/CryptoStream?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Collections;
using System.Threading;
using System.Security;
using System.Security.Cryptography;
using System.Net;
using System.Net.Sockets;
namespace EncryptionTestA
{
class Program
{
static void Main(string[] args)
{
TcpListener listener = new TcpListener(IPAddress.Parse("127.0.0.1"), 1892);
listener.Start();
TcpClient client = listener.AcceptTcpClient();
NetworkStream ns = client.GetStream();
Rijndael aes = RijndaelManaged.Create();
byte[] key …Run Code Online (Sandbox Code Playgroud)