修改一下上面的代码Dictionary<long, Action<byte[]>> dic = new Dictionary<long, Action<byte[]>>() private void Send(byte[] buffer, Action<byte[]> callback){ lock(dic) { var n = 当前的消息序号(); dic.Add(n, callback); buffer = 重新封装消息信令(n, buffer); //将编号n 封装进消息中 } this.Client.Send(buffer);}我这里只是简单举例。实际的信令,不仅仅要在“最外层”封装消息的序号,而且还要封装对方解析时应该知道的类型名称,甚至终端编号等等。要想进行高效率的长连接通讯,就需要进行信令格式设计。而不是仅知道几条tcp通讯指令。
Dictionary<long, Action<byte[]>> dic = new Dictionary<long, Action<byte[]>>() private void Send(byte[] buffer, Action<byte[]> callback){ lock(dic) { var n = 当前的消息序号(); dic.Add(n, callback); buffer = 重新封装消息信令(n, buffer); //将编号n 封装进消息中 } this.Client.Send(buffer);}