繁体   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