tcpclient类post数据并获取返回结果的问题

歪歪 2011-12-09 01:49:29
代码如下:

TcpClient tcpClient = new TcpClient();
Uri URI = new Uri("http://192.168.18.66/getData");
tcpClient.Connect(URI.Host, URI.Port);
NetworkStream netStream = tcpClient.GetStream();
if (netStream.CanWrite)
{
string msg = "name=aabb11";
StringBuilder sb = new StringBuilder();
sb.Append("POST " + URI.PathAndQuery + " HTTP/1.0\r\n");
sb.Append("Host: " + URI.Host + "\r\n");
sb.Append("Content-Type: application/x-www-form-urlencoded\r\n");
sb.Append("Content-Length: " + Encoding.UTF8.GetByteCount(msg) + "\r\n");
sb.Append("\r\n");
sb.Append(msg + "\r\n");

Byte[] sendBytes = Encoding.UTF8.GetBytes(sb.ToString());
netStream.Write(sendBytes, 0, sendBytes.Length);
netStream.Flush();
}

if (netStream.CanRead)
{
Thread.Sleep(10); //这个地方加上就能获取到数据,如果去掉大部分时候都不能获取到,只有少数时候能取得
byte[] bytes = new byte[tcpClient.ReceiveBufferSize];
netStream.Read(bytes, 0, (int)tcpClient.ReceiveBufferSize);
string returndata = Encoding.UTF8.GetString(bytes);
returndata = returndata.Substring(0,returndata.IndexOf('\0'));

Console.WriteLine("returns: " + returndata);
}

tcpClient.Close();
netStream.Close();

Thread.Sleep(10); //这个地方加上就能获取到数据,如果去掉大部分时候都不能获取到,只有少数时候能取得,求解
...全文
385 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿非 2011-12-09
  • 打赏
  • 举报
回复
试试 判断 TcpClient.Connected

或者用 EndConnect
歪歪 2011-12-09
  • 打赏
  • 举报
回复
用 ssp2009 的方法搞定,多谢两位
歪歪 2011-12-09
  • 打赏
  • 举报
回复
呵呵,你可真有速度。我也知道是因为响应没回来,我想请教的是如何去掉这个sleep用他原生的方法或者事件来实现同样的效果。
快溜 2011-12-09
  • 打赏
  • 举报
回复
StreamReader streamReader = new StreamReader(netStream)
streamReader.ReadLine()
阿非 2011-12-09
  • 打赏
  • 举报
回复
响应还没回来,自然得不到

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧