Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#通过TCP通过SSL发送请求不';行不通_C#_Sockets_Ssl_Tcp - Fatal编程技术网

C#通过TCP通过SSL发送请求不';行不通

C#通过TCP通过SSL发送请求不';行不通,c#,sockets,ssl,tcp,C#,Sockets,Ssl,Tcp,下面是我发送用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

下面是我发送用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的答案中选出来的,所以我很惊讶它不起作用。以下是我从服务器接收问候语的代码(它工作正常):


如果
sslStream.Read(buffer,0,buffer.Length)挂起,这是因为服务器尚未发送响应

查看github上的代码(与您的另一个问题链接),您似乎正在使用
Console.ReadLine()
读取命令,然后将它们写入网络流

发生的情况是,
ReadLine()
去掉了它返回的字符串中的
“\r\n”
,因此在将它发送到服务器时,您需要做的是添加回
“\r\n”
,以便服务器知道该命令已完成(它等待获得EOL序列后才会响应)

您可以在
SendRequest()
中执行以下操作:

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

“我从stackoverflow的答案中得到了这个答案,所以我很惊讶它不起作用。”网络上的大多数TCP内容都大错特错。小心…你说的“不工作”是什么意思?它不会显示来自服务器的答案,当我调试我的程序时,它会停在这一行附近
bytes=sslStream.Read(buffer,0,buffer.Length),只需停止。
sslStream.Write(Encoding.ASCII.GetBytes(request + "\r\n"));