【发布时间】:2017-02-20 15:07:40
【问题描述】:
我目前正在创建一个与服务器通信的客户端。到目前为止,任何通信都不会超过一条线,所以我已经能够使用 Streamreader readline 来获取客户端的输入。 但是,我现在有多行代码的命令,但服务器只会读取第一行,因为我使用了 readline()。 我试过 readtoend(),但是当我这样做时,服务器和客户端之间的连接由于某种原因失败了。
以下是我的客户端中的代码,一个显示由多行发送的命令的示例:
else if (args.Length == 1)
{
sw.WriteLine("GET" + " /?name=" + args[0] + " HTTP/1.1");
sw.WriteLine("HOST: " + host);
sw.WriteLine("");
sw.Flush();
}
这是我的服务器中的代码,在该行中读取:
string line = sr.ReadToEnd().Trim();
Console.WriteLine("Respond Recieved " + line);
String[] Sections = line.Split(new char[] { ' ' }, 2);
所以,为了帮助澄清问题,如果我将如上所示的命令发送到服务器,服务器的响应将是“收到的响应:GET”+“/?name=”+args[0]+“ HTTP/1.1" 而不是其他行。
任何帮助将不胜感激!
谢谢
露西
【问题讨论】:
-
有什么东西关闭了连接吗?如果没有,您预计
ReadToEnd何时返回? -
从哪里调用你的 readtoend?它怎么知道什么时候开火?
-
另外,你好像在写一个HTTP客户端,你不能改用内置的
HttpClient吗? -
我删除了 readtoend 因为它导致连接失败
-
@DavidG 我不知道你能做到,我去看看
标签: c# server client streamreader readline