0

TCP/IP (IPv4) ソケットを作成し、着信接続をリッスンする関数がいくつかあります。

private string RunServer(string certificate)
    {
        string messageData = "";
        X509Certificate2 cert = new X509Certificate2(@"C:\a.p12", "qwerty");
        var listener = new TcpListener(IPAddress.Parse("127.0.0.1"), 443);
        listener.Start();
        while (true)
        {
            var client = listener.AcceptTcpClient();
            var sslStream = new SslStream(client.GetStream(), false);
            try
            {
                sslStream.AuthenticateAsServer(cert,
                false, SslProtocols.Tls, true);
                messageData = ReadFromSslClient(sslStream, client);
            }
            finally
            {
                sslStream.Close();
                client.Close();
            }
        }
        return messageData;
    }

そして、クライアントのテスト メッセージを読み取る関数。エラーが発生する場所:

private static string ReadFromSslClient(SslStream sslStream, TcpClient client)
    {
        byte[] buffer = new byte[2048];
        var messageData = new StringBuilder();
        int bytes = -1;
        do
        {
            try{
                if (client.Connected)
                {
                    bytes = sslStream.Read(buffer, 0, 1);
                    messageData.Append(bytes);
                }
                if (messageData.ToString().IndexOf("<EOF>") != -1)
                {
                    break;
                }
             }
            catch(System.NotSupportedException notSupportedException)
            {

            }
        } while (bytes != 0);

        return messageData.ToString();
    }

バッファにデータを読み込もうとすると、10054 エラーと client.Connected equals false が表示されます。

4

0 に答える 0