public void OnReceived(IAsyncResult ar) { try { IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0); EndPoint tempRemoteEP = (EndPoint)sender; int size = _server.EndReceiveFrom(ar, ref tempRemoteEP); if (size > 0) { int position = 0; byte[] buffer = new byte[_server.ReceiveBufferSize]; Buffer.BlockCopy(_buffer, position, buffer, 0, size); ConReader reader = new ConReader(buffer); Console.WriteLine(teste + "- POSITION =" + position + " size = " + size); UDPClient client = new UDPClient(_server, tempRemoteEP); _onReceivedHandler(client, reader); position += reader.GetSize(); } _server.BeginReceiveFrom(_buffer, 0, _server.ReceiveBufferSize, SocketFlags.None, ref _endPoint, new AsyncCallback(OnReceived), null); } catch (Exception e) { Console.WriteLine("Fechando conexao : " + e.StackTrace); } }
private static void Server_OnReceiveHandler(ConReader reader) { Console.WriteLine("Aguardando"); Console.WriteLine(new { Name = reader.ReadString(), }); }
private void OnReceived(IAsyncResult ar) { EndPoint endPoint = new IPEndPoint(_ipAddress, _port); int size = _server.EndReceiveFrom(ar, ref endPoint); if (size > 0) { int position = 0; byte[] buffer = new byte[_server.ReceiveBufferSize]; Buffer.BlockCopy(_buffer, position, buffer, 0, size); ConReader reader = new ConReader(buffer); Console.WriteLine(teste + "- POSITION =" + position + " size = " + size); _onReceivedHandler(reader); position += reader.GetSize(); teste++; } _server.BeginReceiveFrom(_buffer, 0, _server.ReceiveBufferSize, SocketFlags.None, ref _endPoint, new AsyncCallback(OnReceived), null); }
private void OnReceived(IAsyncResult ar) { int size = _server.EndReceive(ar); if (size > 0) { int position = 0; while (size > position) { byte[] buffer = new byte[_server.ReceiveBufferSize]; Buffer.BlockCopy(_buffer, position, buffer, 0, size); ConReader reader = new ConReader(buffer); Console.WriteLine(teste + "- POSITION =" + position + " size = " + size); _onReceivedHandler(reader); position += reader.GetSize(); } teste++; _server.BeginReceive(_buffer, 0, _server.ReceiveBufferSize, SocketFlags.None, new AsyncCallback(OnReceived), null); } }
private static void Server_OnReceiveHandler(IClient client, ConReader reader) { using (ConReader t = reader) { int tag = t.GetTag(); if (client is UDPClient && !clientsUDP.ContainsKey(client)) { Console.WriteLine("Adicionando no UDP"); clientsUDP.Add(client, new Player()); } if (client is TCPClient) { switch (tag) { case 1: int id = t.ReadInt(); string nome = t.ReadString(); float x = t.ReadFloat(); float y = t.ReadFloat(); float z = t.ReadFloat(); bool isLocal = t.ReadBool(); foreach (var p in clientsTCP) { using (ConWriter conWriter = new ConWriter(1)) { conWriter.Send(id); conWriter.Send(nome); conWriter.Send(x); conWriter.Send(y); conWriter.Send(z); conWriter.Send(isLocal); p.Key.Send(conWriter); } } break; case 2: using (ConWriter writer = new ConWriter(2)) { int playerId = t.ReadInt(); KeyValuePair <IClient, Player> player = clientsTCP.First(x1 => { Console.WriteLine(x1.Value.Id + " " + playerId); return(x1.Value.Id == playerId); }); player.Value.Position.X = t.ReadFloat(); player.Value.Position.Y = t.ReadFloat(); player.Value.Position.Z = t.ReadFloat(); writer.Send(player.Value.Id); writer.Send(player.Value.Position.X); writer.Send(player.Value.Position.Y); writer.Send(player.Value.Position.Z); Console.WriteLine("Enviando para todos mensagem de " + player.Value.Id); SendToAll(writer.GetBuffer(), new List <IClient>() { player.Key }); } break; default: break; } } else { int playerId = reader.ReadInt(); switch (tag) { case 1: Console.WriteLine(reader.ReadString()); break; } } } }