static private void listenServer() { while (true) { byte[] result = new byte[1024]; int receiveLength = 0; try { if (soc != null) { receiveLength = soc.Receive(result); } else { throw new SocketException(); } } catch (SocketException e) { InfoBox.AddInfo("服务器连接错误!您已离线。[Listening failed]"); return; } string s = Encoding.UTF8.GetString(result, 0, receiveLength); while (s.Contains("}")) { try { int t = 0, cnt = 0; while (s[t] != '{' && t < s.Length) { ++t; } ++cnt; while (cnt > 0 && t < s.Length - 1) { ++t; if (s[t] == '{') { ++cnt; } if (s[t] == '}') { --cnt; } } if (t >= s.Length) { break; } string s0 = s.Substring(0, t + 1); s = s.Substring(t + 1); JObject j; j = (JObject)JsonConvert.DeserializeObject(s0); if (j["action"].ToString().Equals("send")) { InfoBox.AddInfo(j["content"].ToString()); } else if (j["action"].ToString().Equals("get")) { MessagesKeeper.RefreshMessage(j); } else if (j["action"].ToString().Equals("user")) { User.Login(j); } } catch { Console.WriteLine("数据解析失败。"); break; } } } }