/// <summary> /// Recibe un mensaje de TGC por un socket /// </summary> /// <param name="socket">Socket del cual recibir</param> /// <param name="msgType">Tipo de mensaje esperado</param> /// <returns>Mensaje recibido o null si recibió mal</returns> public static TgcSocketRecvMsg receiveMessage(Socket socket, TgcSocketMessageHeader.MsgType msgType) { try { //Recibir header byte[] headerData = new byte[TgcSocketMessageHeader.HEADER_SIZE]; int recv = socket.Receive(headerData, headerData.Length, SocketFlags.None); if (recv == TgcSocketMessageHeader.HEADER_SIZE) { int msgLength = BitConverter.ToInt32(headerData, 0); //Recibir cuerpo del mensaje byte[] msgData = new byte[msgLength]; recv = socket.Receive(msgData, msgData.Length, SocketFlags.None); if (recv == msgLength) { TgcSocketRecvMsg recvMsg = new TgcSocketRecvMsg(msgData); return recvMsg; } } } catch (Exception) { return null; } return null; }
/// <summary> /// Enviar un mensaje de TGC por un socket /// </summary> /// <param name="socket">Socket por el cual enviar</param> /// <param name="msg">Mensaje a enviar</param> /// <param name="msgType">Tipo de mensaje a enviar</param> /// <returns>True si lo pudo hacer bien</returns> public static bool sendMessage(Socket socket, TgcSocketSendMsg msg, TgcSocketMessageHeader.MsgType msgType) { try { //Enviar Header byte[] msgBytes = msg.getBytes(); byte[] data = BitConverter.GetBytes(msgBytes.Length); socket.Send(data); //Enviar msg socket.Send(msgBytes); } catch (Exception) { return false; } return true; }