protected void Button3_Click(object sender, EventArgs e)
{
TcpClient tcp = new TcpClient();
try
{
tcp.Connect(WwendPoint1);
}
catch (Exception ex)
{
Response.Write(ex);
}
if (tcp.Connected)
{
NetworkStream streamToServer = tcp.GetStream();
streamToServer.Write(WeightQuest, 0, WeightQuest.Length);
byte[] weightGet = new byte[16];
streamToServer.Read(weightGet, 0, weightGet.Length);
float weight = DoWeightData(weightGet);
TextBox1.Text = weight.ToString();
}
tcp.Close();
}
用这段代码一到这段
streamToServer.Read(weightGet, 0, weightGet.Length);就反应不过来。后来我发现streamToServer的DataAvailable = false。为什么我已经写进去了却读不出来值呢?后来我用telnet也是连接该IP地址的这个端口,与它会话,就可以取到正常的。
------解决思路----------------------
发送的数据错误,对方没有响应,所以接收不到返回信息
你应该设置ReadTimeOut,让它超时就抛个异常,而不是永远阻塞在Read方法里
------解决思路----------------------
NetworkStream streamToServer = tcp.GetStream();
StreamWriter sw = new StreamWriter(ns);
StreamReader sr = new StreamReader(ns);
sw.WriteLine(WeightQuest, 0, WeightQuest.Length);
sw.Flush();//一定要Flush
TextBox1.Text = sr.ReadLine();
------解决思路----------------------
你确定你的 Telenet 默认的字符编码是 utf8 吗?
你打入S之后没有碰任何键(例如敲一下回车键)吗?