private static void sendLoginSuccess(AsyncSocketServer server, Guid ConnectionID) { StreamPackage <ResultMessage> result = new StreamPackage <ResultMessage>(); result.Command = Command.Login; result.Data.Ret = 0; server.Send(ConnectionID, result.DataBytes()); }
private static void sendFriendsMessage() { StreamPackage <FriendsMessage> friendPost = new StreamPackage <FriendsMessage>(); friendPost.Command = Command.Friends; friendPost.Data.UID = Tools.RndInt(10000, 99999); client.Send(friendPost.DataBytes()); }
private static void sendLoginMessage() { StreamPackage <LoginMessage> loginPost = new StreamPackage <LoginMessage>(); loginPost.Command = Command.Login; loginPost.Data.UID = Tools.RndInt(10000, 99999); client.Send(loginPost.DataBytes()); }
private static void broadcastMessage(int uid) { StreamPackage <LabaMessage> labaPost = new StreamPackage <LabaMessage>(); labaPost.Command = Command.BigData; labaPost.Data.Data = uid.ToString() + "上线了!"; server.Broadcast(labaPost.DataBytes()); ServerMsg(labaPost.Data.Data); }
private static void sendBigMessage() { for (var i = 0; i < 10; i++) { StreamPackage <LabaMessage> bigPost = new StreamPackage <LabaMessage>(); bigPost.Command = Command.BigData; bigPost.Data.Data = "第" + i.ToString() + "个大数据:" + Tools.RndString(Tools.RndInt(100, 10000)); client.Send(bigPost.DataBytes()); ClientMsg(bigPost.Data.Data); } }
public void Close(bool isCallback = true) { if (socket != null) { socket.Close(); } if (currentPackage != null) { currentPackage.Clear(); } if (readStream != null) { readStream.Close(); } if (binaryReader != null) { binaryReader.Close(); } if (writeStream != null) { writeStream.Close(); } if (binaryWriter != null) { binaryWriter.Close(); } currentPackage = null; receiveThread = null; socket = null; CloseCheckConnectingTimer(); CloseCheckConnectedTimer(); if (isCallback) { SetState(ConnectState.Close); } }
private static void sendFriendsMessage(AsyncSocketServer server, Guid ConnectionID) { StreamPackage <UsersMessage> usersMessage = new StreamPackage <UsersMessage>(); usersMessage.Command = Command.Friends; usersMessage.Data.List = new List <UserMessage>() { new UserMessage() { UID = 1, NickName = "11", Avatar = "111" }, new UserMessage() { UID = 2, NickName = "22", Avatar = "222" }, new UserMessage() { UID = 3, NickName = "33", Avatar = "333" } }; server.Send(ConnectionID, usersMessage.DataBytes()); }
/// <summary> /// 将接收到的字节转成数据包 /// </summary> /// <param name="e">接收数据</param> /// <param name="littleEndian">小端</param> /// <param name="maxPackageSize">最大包大小</param> /// <returns>数据包数 null为非法数据包</returns> public IList <INetPackage> Parse(AsyncSocketTokenEventArgs e, bool littleEndian = true, int maxPackageSize = 10240) { //lock (((ICollection)lockers).SyncRoot) { } if (!lockers.ContainsKey(e.ConnectionID)) { lockers[e.ConnectionID] = new object(); } lock (lockers[e.ConnectionID]) { if (cache.ContainsKey(e.ConnectionID)) { cache[e.ConnectionID] = EndianHelper.UnionBytes(cache[e.ConnectionID], e.ReceivedBytes); } else { cache[e.ConnectionID] = EndianHelper.UnionBytes(null, e.ReceivedBytes); } byte[] data = cache[e.ConnectionID]; int count = data.Length; if (count <= 4) { return(new List <INetPackage>()); } if (count > maxPackageSize) { return(null); } IList <INetPackage> packs = new List <INetPackage>(); while (count > 4) { using (System.IO.MemoryStream stream = new System.IO.MemoryStream(data)) { StreamReader reader = new StreamReader(stream, littleEndian); int length = reader.ReadInt(); if (length > 0 && count >= length + 4) { INetPackage package = new StreamPackage(); byte[] result = new byte[length]; System.IO.MemoryStream resultStream = new System.IO.MemoryStream(result); stream.Position = 4; stream.Read(result, 0, length); package.Stream = new StreamReader(resultStream, littleEndian); package.Command = package.Stream.ReadInt(); data = new byte[count - length - 4]; stream.Position = length + 4; stream.Read(data, 0, count - length - 4); cache[e.ConnectionID] = data; packs.Add(package); count = count - length - 4; } else { if (length < 0) { cache[e.ConnectionID] = null; } return(packs); } } } return(packs); } }
private void CreateMessage(StreamPackage package) { receiveCallback(package.msgType, package.msgBytes); package.Clear(); }