C#通过TCP通过SSL发送请求不';行不通
下面是我发送用SSL编码的TCP请求并从服务器获取答案的代码,但它不起作用。调试和尝试捕获异常不起作用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
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"));