簡體   English   中英

C#通過TCP發送SSL請求不起作用

[英]C# Sending request with SSL via TCP doesn't work

這是我的代碼發送在SSL中編碼的TCP請求並從服務器獲得答案,但它不起作用。 調試並嘗試捕獲異常不起作用。

public void SendRequest(string request)
{
    byte[] buffer = new byte[2048];
    int bytes = -1;

    sslStream.Write(Encoding.ASCII.GetBytes(request));
    bytes = sslStream.Read(buffer, 0, buffer.Length);
    Console.WriteLine(Encoding.ASCII.GetString(buffer, 0, bytes));
}

我從stackoverflow回答中得到了這個,所以我很驚訝它不起作用。 這是我的代碼,從服務器接收問候語(它正常工作):

byte[] buffer = new byte[2048];
StringBuilder messageData = new StringBuilder();
int bytes = 0;
bytes = sslStream.Read(buffer, 0, buffer.Length);
Decoder decoder = Encoding.UTF8.GetDecoder();
char[] chars = new char[decoder.GetCharCount(buffer, 0, bytes)];
decoder.GetChars(buffer, 0, bytes, chars, 0);
messageData.Append(chars);

Console.Write(messageData.ToString());

如果是sslStream.Read(buffer, 0, buffer.Length); 這是因為服務器沒有發送響應。

看看你在github上的代碼(從你的其他問題鏈接),看起來你正在使用Console.ReadLine()來讀取命令,然后將它們寫入你的網絡流。

發生的事情是ReadLine()剝離它返回的字符串中的"\\r\\n" ,所以在將它發送到服務器時你需要做的就是添加"\\r\\n"所以服務器知道命令已完成(它等待直到它得到EOL序列才會響應)。

你可以做的是在SendRequest() ,你可以這樣做:

sslStream.Write(Encoding.ASCII.GetBytes(request + "\r\n"));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM