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