public void OnUdpReceive(byte[] data, RemoteHyperSocket socket) { var jsondata = data.AsJObject(); var jsonObj = new JObject(); jsonObj.Add("id", socket.SessionId); jsonObj.Add("msg", jsondata["msg"]); var buffer = jsonObj.AsBytes(); if (jsondata["id"].ToString() == "0") { foreach (var item in sockets) { if (item.Key != socket.SessionId) { item.Value.SendTcp(buffer); } } socket.SendUdp("(群)成功"); } else { if (sockets.TryGetValue(int.Parse(jsondata["id"].ToString()), out var value)) { value.SendTcp(buffer); socket.SendUdp("成功"); } else { socket.SendUdp("失败"); } } }
public void StartClient() { socket = HyperSocket.CreateClient("127.0.0.1", 8888, new ClientListener()); while (true) { var id = Console.ReadLine(); var str = Console.ReadLine(); var jsonObj = new JObject(); jsonObj.Add("id", int.Parse(id)); jsonObj.Add("msg", str); socket.SendUdp(jsonObj.AsBytes()); } }
/// <summary> /// 注意此处指描述了JObject的相关操作 /// JArray没有写入事例,因为它们之间的相关调用都一样 /// 只需要实现区分json的类型到底是对象还是数组采用不同方式处理即可 /// </summary> public Test_Json() { // 先简单创建一个json数据 JObject jobj = new JObject() { { "id", 100 }, { "content", "hello world" } }; // 通过AsString可以快速转换对象为string类型 var sobj = jobj.AsString(); // 通过AsBytes可以快速转换对象为byte[]类型 // 注意本框架所有案例的byte转码如无特殊说明都为 utf-8 编码 var bobj = jobj.AsBytes(); // 通过json字符串转为Json对象 var jobj2 = sobj.AsJObject(); // 通过json字节数组转为Json对象 var jobj3 = bobj.AsJObject(); Console.WriteLine($"json:{sobj}"); }