当前位置: 代码迷 >> C# >> TCP/IP通信
  详细解决方案

TCP/IP通信

热度:643   发布时间:2016-05-05 04:41:10.0
TCP/IP通讯
 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();

------解决思路----------------------
引用:
我的这个服务器,开始只有com1端口是RS232的后来给改成的以太网形式的。不知道跟这有没有关系。请指教,谢谢


你确定你的 Telenet  默认的字符编码是 utf8 吗?
你打入S之后没有碰任何键(例如敲一下回车键)吗?
  相关解决方案