TCP通信必须要将数据放在一个缓冲数组中么

.Net技术 码拜 7年前 (2017-05-05) 1173次浏览
               if (user.br != null && user.client.Available > 0)
                {
                    AddMsg("receivedata ok");
                    string str = user.br.ReadString();
                    user.clientMessage = JsonConvert.DeserializeObject<ClientMessage>(str);
                    AddMsg("message :" + str);
                }
                else
                {
                    user.clientMessage = null;
                }
//--其中的User类中
       public User(TcpClient client)
        {
            this.client = client;
            remoteEndPoint = client.Client.RemoteEndPoint;
            IPEndPoint ipe = remoteEndPoint as IPEndPoint;
            remoteIPAddress = ipe.Address;
            //client.
            userType = UserType.Clinic;
            //TODO: 测试时,考虑将bw和br后面用到的时候再初始化。
            bw = new BinaryWriter(client.GetStream());
            br = new BinaryReader(client.GetStream());
        }

本人这里没有放在缓冲数组中,而是直接读取成字符串。能否有什么问题?本人测试了一下,几万个字符也没有问题。
另外,原因是全是字符,所以,能否需要换成其他的流?本人这里是BinaryReader。
本人没有企业开发经验,不知道各位工作中,是怎么样处理的?
本人的代码测试起来好像没有问题。

解决方案

20

本人再给你最后说明一下到底是什么区别,但愿你有办法能理解:
人家的代码可能是从长连接识别和解析各个命令的需求出发的。而你根本没有这个需求,仅仅是最底层的概念,那么怎么写都无所谓,原因是你根本不去解析命令啊!
只有你看懂了人家高层的需求,你才知道人家底层为什么那么写代码,你才知道本人缺少什么啊?!

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明TCP通信必须要将数据放在一个缓冲数组中么
喜欢 (0)
[1034331897@qq.com]
分享 (0)