SuperSocket与Netty之实现protobuf协议,包括服务端和客户端
2018-06-15 14:51
1026 查看
- 参考资料说明
SuperSocket文档 http://docs.supersocket.net/
Protobuf语言参考 https://developers.google.com/protocol-buffers/docs/proto
单消息多类型解决方案 https://developers.google.com/protocol-buffers/docs/techniques#
主要资料(非常感谢) http://www.cnblogs.com/caipeiyu/p/5559112.html
使用的ProtocolBuffers http://code.google.com/p/protobuf-csharp-port
关于MsgPack的协议 https://my.oschina.net/caipeiyu/blog/512437
Proto
namespace SuperSocketProtoClient { class Program { static void Main(string[] args) { EasyClient client = new EasyClient(); client.Initialize(new ProtobufReceiveFilter(), packageInfo => { switch (packageInfo.Type) { case DefeatMessage.Types.Type.BackMessage: Console.WriteLine("BackMessage:{0}", packageInfo.Body.BackMessage.Content); break; case DefeatMessage.Types.Type.CallMessage: Console.WriteLine("CallMessage:{0}", packageInfo.Body.CallMessage.Content); break; } }); var flag = client.ConnectAsync(new DnsEndPoint("127.0.0.1", 2017)); if (flag.Result) { var callMessage = CallMessage.CreateBuilder() .SetContent("Hello I am form C# client by SuperSocket ClientEngine").Build(); var message = DefeatMessage.CreateBuilder() .SetType(DefeatMessage.Types.Type.CallMessage) .SetCallMessage(callMessage).Build(); using (var stream = new MemoryStream()) { CodedOutputStream os = CodedOutputStream.CreateInstance(stream); os.WriteMessageNoTag(message); os.Flush(); byte[] data = stream.ToArray(); client.Send(new ArraySegment<byte>(data)); } Thread.Sleep(2000); // 发送PersonMessage var personMessage = PersonMessage.CreateBuilder() .SetId(123).SetAge(33).SetSex(PersonMessage.Types.Sex.Male).SetName("zstudio").SetPhone("110").Build(); message = DefeatMessage.CreateBuilder().SetType(DefeatMessage.Types.Type.PersonMessage) .SetPersonMessage(personMessage).Build(); using (var stream = new MemoryStream()) { CodedOutputStream cos = CodedOutputStream.CreateInstance(stream); cos.WriteMessageNoTag(message); cos.Flush(); byte[] data = stream.ToArray(); client.Send(new ArraySegment<byte>(data)); } } Console.ReadKey(); } } }View Code
- 执行结果
- https://www.cnblogs.com/linxmouse/p/7905575.html
- 工程、资源、资料打包:http://pan.baidu.com/s/1qXB9aEg
- 更多项目相关细节和详情参考博客:http://www.cnblogs.com/caipeiyu/p/5559112.html, 在此也表示对博主由衷的感谢!!!
相关文章推荐
- SuperSocket与Netty之实现protobuf协议,包括服务端和客户端
- SuperSocket与Netty之实现protobuf协议,包括服务端和客户端
- Google Protobuf 协议+Socket实现异步登录
- 基于开源SuperSocket实现客户端和服务端通信项目实战
- 基于开源SuperSocket实现客户端和服务端通信项目实战
- C++ socket编程 实现服务端与客户端的通讯
- 基于Netty实现的简易服务端与客户端的信息交流
- Android socket实现原理详解 服务端和客户端如何搭建
- Python实现基于TCP UDP协议的IPv4 IPv6模式客户端和服务端功能示例
- PHP基于socket实现客户端和服务端通讯功能
- loadrunner使用socket协议来实现客户端对服务器产生压力实例。(通过发送心跳包,达到连接多个客户端的目的)
- 基于Netty实现的简易服务端与客户端的信息交流
- Linux下安装protobuf并实现简单的客户端服务器端通信
- socket实现服务端与客户端的通讯
- 使用socket实现简单的客户端和服务端通信(C#语言)
- 实现UDP协议,socket编程,调用到windowsAPI,实现客户端和服务器
- Cocos2dx + Libev + protobuf 实现长连接客户端
- linux网络编程之用socket实现简单客户端和服务端的通信(基于TCP)
- loadunner使用socket协议来实现多客户端连接同一服务器脚本(使用到IP欺骗技术)
- 基于libuv实现tcp客户端和服务端(支持监听1000多个端口;打印客户端服务端socket;固定端口连接)