gpt4 book ai didi

带套接字 tcp 的 C# ssl/tls

转载 作者:可可西里 更新时间:2023-11-01 02:31:58 32 4
gpt4 key购买 nike

我是 C# 开发新手。我正在尝试通过 tcp 使用 ssl/tls,但在我的代码中,system.net.sockets.socket(裸套接字)未使用 tcpclient 或 tcplistner。我搜索了至少 200 个网络链接,但没有找到任何相关信息。我想使用更少的编码并通过 tcp 套接字连接完成 ssl 或 tsll。我有客户端、服务器、CA 证书、.key 格式的 key 。请帮助示例或链接。如果你觉得更详细,你可以提问。

最佳答案

为什么不想使用 TcpClient?使用 TcpClientSsltream 创建 SSL 连接非常简单。除非您需要数千个同时连接,否则我会坚持使用 TcpClientSSLStream

基本的 TcpClientSslStream 示例如下:

static void Main(string[] args)
{
string server = "127.0.0.1";
TcpClient client = new TcpClient(server, 443);

using (SslStream sslStream = new SslStream(client.GetStream(), false,
new RemoteCertificateValidationCallback(ValidateServerCertificate), null))
{
sslStream.AuthenticateAsClient(server);
// This is where you read and send data
}
client.Close();
}

public static bool ValidateServerCertificate(object sender, X509Certificate certificate,
X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
return true;
}

用 .NET 编写高性能套接字代码可能很困难,但有很好的例子。您有多种选择。我不确定一种解决方案适合所有情况,因此我将在此处列出一些。

  1. 使用[Asynchronous Client Socket]也许是一个很好的起点
  2. 您可以利用一些现有的库。我用过 Nito/Async但是我认为它自 2009 年以来就没有更新过。有人谈论过版本 2,但我认为它没有实现。
  3. 我不熟悉它,但 CodeProject 有 C# SocketAsyncEventArgs High Performance Socket Code
  4. 查看 Microsoft 的指南,High Performance .NET Socket Server Using Async Winsock
  5. 阅读 Stephen Toub 所说的一切,包括 Awaiting Socket Operations

我没有专门针对 SSL,而是研究了 SslStream 类。

您还需要研究缓冲池。如果您为成千上万的客户提供服务,垃圾收集将是一个问题。对此的一个很好的介绍是 Sunny Ahuwanya's Blog


https://github.com/StephenCleary/AsyncEx

之前。

关于带套接字 tcp 的 C# ssl/tls,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39304612/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com