首页
社区
课程
招聘
[求助]C# NetworkStream循环为什么是收到数据循环,而不是一直循环?
发表于: 2017-3-19 17:19 3531

[求助]C# NetworkStream循环为什么是收到数据循环,而不是一直循环?

2017-3-19 17:19
3531

本人新手初学C#网络编程,发现了一个很奇怪的问题,就是在while循环中下断,居然不断下来,只有当收到数据时才会断下来

private void AccepMessage()
        {
            NetworkStream netStream = new NetworkStream(socket);
            while (true)
            {
                try
                {
                    byte[] datasize = new byte[4];
                    netStream.Read(datasize, 0, 4);//我在此处下断,不会断下来,只有当收到数据时才会断下来
                    int size = System.BitConverter.ToInt32(datasize, 0);
                    Byte[] message = new byte[size];
                    int dataleft = size;
                    int start = 0;
                    while (dataleft > 0)
                    {
                        int recv = netStream.Read(message, start, dataleft);
                        start += recv;
                        dataleft -= recv;
                    }
                    this.rchTxtBoxReceive.Text = System.Text.Encoding.Unicode.GetString(message);
                }
                catch
                {
                    break;
                }
            }
        }

 private void btnRequest_Click(object sender, EventArgs e)
        {            
            thread = new Thread(new ThreadStart(AccepMessage));
            thread.Start();
        }

请问这是为什么?


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 13
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
听说是因为networkstream.read阻塞,自己再去试下!
2017-3-19 17:51
0
雪    币: 4560
活跃值: (1002)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
学习路径是从ASM>C>其他高级语言就不会有这种困惑了
2017-3-19 23:39
0
游客
登录 | 注册 方可回帖
返回
//