日期:2014-05-17  浏览次数:21186 次

C# Socket TCP 长连接 服务端怎么循环 接收数据?
如题
我这样写的 但是 一直占资源。
C# code

                while (true)
                {
                    byte[] buffer = SocketEx.Receive(socketClient, this.BefferSize);
                    if (buffer == null)
                        continue;
                    …………
                }



C# code

        public static byte[] Receive(Socket socket, int beffersize)
        {
            try
            {
                using (MemoryStream ms = new MemoryStream())
                {
                    socket.Receive(befferSize, 4, SocketFlags.None);
                    int dataLength = BitConverter.ToInt32(befferSize, 0);
                    //判断读取字节为0
                    if (dataLength == 0)
                        return null;
                    …………
                    …………
                    return ms.ToArray();
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }



------解决方案--------------------
while (true)还不把cup都占了,如果在主线程,那肯定死了