private void SendJoinToMatchPacket() { packetWriter.BaseStream.Position = 0; packetWriter.Write((byte)PacketType.JoinToMatch); udpNetwork.Send(sendBuffer, 0, (int)packetWriter.BaseStream.Position); }
protected override void NetworkWorker_DoWork(object sender, DoWorkEventArgs e) { byte[] operationBytes = Encoding.UTF8.GetBytes(ExchangeHelper.ToString(operation)); byte[] beSended = ByteHelper.LinkBytes(operationBytes, beSendedData); byte[] receive = net.Send(beSended, 10000, tryTimes); string originData = receive == null?ExchangeHelper.ToString(ExchangeCode.TIME_OUT) : Encoding.UTF8.GetString(receive); e.Result = originData; }
private void SendCommandsToClient(Client client) { if (client.lastReceivedTick == commandsHistoryFragmentsStart.Count) { return; } packetWriter.BaseStream.Position = 0; packetWriter.Write((byte)PacketType.Sync); //start tick in packet packetWriter.Write(client.lastReceivedTick + 1); var fragmentsCountPos = packetWriter.BaseStream.Position; packetWriter.BaseStream.Position += sizeof(ushort); ushort fragmentsCount = 0; for (var i = (int)(client.lastReceivedTick + 1); i <= commandsHistoryFragmentsStart.Count; i++) { var fragmentStartPos = commandsHistoryFragmentsStart[i - 1]; var fragmentEndPos = i == commandsHistoryFragmentsStart.Count ? historyWriter.BaseStream.Position : commandsHistoryFragmentsStart[i]; var fragmentSize = fragmentEndPos - fragmentStartPos; if (fragmentSize > sendBuffer.Length - packetWriter.BaseStream.Position) { break; } Buffer.BlockCopy(commandsHistoryBuffer, (int)fragmentStartPos, sendBuffer, (int)packetWriter.BaseStream.Position, (int)fragmentSize); packetWriter.BaseStream.Position += fragmentSize; fragmentsCount++; } var endPos = packetWriter.BaseStream.Position; packetWriter.BaseStream.Position = fragmentsCountPos; packetWriter.Write(fragmentsCount); udpNetwork.ApplyEndPointToWriter(client.remoteIpEndPoint); udpNetwork.Send(sendBuffer, 0, (int)endPos); }