dart 在C#中连接Flutter和SslStrem

kmpatx3s  于 2023-07-31  发布在  C#
关注(0)|答案(1)|浏览(96)

我有一个使用SslStream的C#服务器:

TcpListener Server = new TcpListener(IPAddress.Any, 13001);
Server.Start();
var client = Server.AcceptTcpClient();

var stream = client.GetStream();
SslStream sslStream = new SslStream(stream, false);
var certificate = new X509Certificate2("server.pfx", "password");
sslStream.AuthenticateAsServer(certificate, false, System.Security.Authentication.SslProtocols.Tls, false);

string text= string.empty;

do
{
byte[] buffer = new byte[client.ReceiveBufferSize];
int bytesRead = sslStream.Read(buffer, 0, client.ReceiveBufferSize);
Input += (Encoding.ASCII.GetString(buffer, 0, bytesRead));
} while (!Input.EndsWith("<EOF>"));

string Return = "Sesrver's answer" + "<EOF>";

sslStream.Write(Encoding.UTF8.GetBytes(Return), 0, Return.Length);

字符串
在使用SslStream之前,我曾经连接过这个flutter客户端:

String _textBuilder = "";
  Socket socket = await Socket.connect(ipAddress, port, timeout: const Duration(seconds: 8));
  socket.listen((List<int> event) {
      _textBuilder += utf8.decode(event);
  });
  socket.add(utf8.encode("Some request text" + "<EOF>"));
  while (!_textBuilder.endsWith("<EOF>"))
  {
    await Future.delayed(const Duration(milliseconds: 50));
  }


一切都很好,但现在我不知道如何连接Flutter到服务器。有什么需要帮忙的吗?

62lalag4

62lalag41#

在我的例子中,我意识到当我可以使用http包时,使用干净的TCP是毫无意义的,因为所有的东西都已经为安全连接做好了准备。所以我开始使用flutter http包。
对于像我这样的初学者,不要浪费时间为安全连接构建自己的代码,如果不需要使用TCP,请使用包。祝你好运:)

相关问题