Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - X3R4CK3R

#81
Programación C/C++ / Re: Chat PyQt4/SFML
16 Julio 2012, 06:26 AM
Cita de: dato000 en 16 Julio 2012, 05:12 AM
+1...yo ni se como implementarlo, pero de verdad que vale la pena hacerlo!!! esta del carajo!!!

oye los graficos tambien son con C++??????

9.99999999999/10 BRAVO!!!!

No, los gráficos son de la librería Qt
#82
Programación C/C++ / Re: Chat PyQt4/SFML
16 Julio 2012, 05:09 AM
Un detalle que se pasó overxfl0w:

El code anterior es únicamente del cliente (chat), el code del servidor lo dejo aquí, por si alguien quiere compilarlo y probar el cliente por localhost o lo que sea:

Código (cpp) [Seleccionar]
#include <SFML/Network.hpp>
#include <iostream>
using namespace std;

struct Client{
    sf::TcpSocket s;
    bool connected;
    sf::String alias;
} Client[256];

int main(int argc, char *argv[])
{

    sf::TcpListener Server;
    sf::SocketSelector Selector;
    int Port = 25569;

    for(int i=0; i<256; i++) Client[i].connected=false, Client[i].alias="Unknown";

    Server.listen(Port);
    cout << "Escuchando puerto " << Port << " TCP..." << endl;
    Selector.add(Server);

    while (Selector.wait())
    {
        if (Selector.isReady(Server))
        {
            for(int i=0; i<256; i++)
            {
                if(!Client[i].connected)
                {
                    sf::Packet Packet;
                    Server.accept(Client[i].s);
                    cout << "Client connected (ID: " << i << ", IP: " << Client[i].s.getRemoteAddress() << ")" << endl;
                    Selector.add(Client[i].s);
                    Client[i].connected=true;
                    break;
                }
            }
        }
        else
        {
            for(int i=0; i<256; i++)
            {
                if(Selector.isReady(Client[i].s))
                {
                    sf::Packet Packet;
                    if(Client[i].s.receive(Packet) == sf::Socket::Done)
                    {
                        int com;
                        Packet >> com;
                        switch (com)
                        {
                            case 0:
                                Client[i].alias.clear();
                                Packet >> Client[i].alias;
                                cout << "Client " << i << " ha cambiado su alias a \"" << Client[i].alias.toAnsiString() << "\"." << endl;
                            break;
                            case 1:
                                sf::String Msg;
                                Packet >> Msg;
                                cout << Client[i].alias.toAnsiString() << ": " << Msg.toAnsiString() << endl;

                                Packet.clear();
                                Packet << Client[i].alias << Msg;

                                for (int i=0; i<256; i++)
                                    if(Client[i].connected)
                                        Client[i].s.send(Packet);

                        }
                        break;
                    }
                    else
                    {
                        cerr << Client[i].alias.toAnsiString() << " se ha desconectado (ID: " << i << ", IP: " << Client[i].s.getRemoteAddress() << ")" << endl;
                        Selector.remove(Client[i].s);
                        Client[i].connected=false;
                        Client[i].alias="Unknown";
                        break;
                    }
                }
            }
        }
    }
}


Saludos!
#83
Foro Libre / Re: ONE PIECE
15 Julio 2012, 01:27 AM
Podrías usar la api de MySQL y montarte una base de datos remota con los links de los distintos servidores a los que está subido cada capítulo y tal, así te ahorrarías que los usuarios tengan que descargar distintas versiones del programa, Aparte de tenerlo más ordenadado.

Saludos!
#84
Programación C/C++ / Re: Slots QT
14 Julio 2012, 23:31 PM
Pff, llevo el día de hoy entero buscando solución a esto y por fin la he hayado... ahí va:

El problema reside en que necesitas un archivo "moc" por cada header relacionado con Q_OBJECT que tengas en tu proyecto. Si tu proyecto consta de los siguientes archivos: main.cpp, chat.cpp, y chat.hpp, necesitas generar un moc_chat.cpp. De esto se encarga el ejecutable moc.exe, que podrás encontrar en la carpeta bin (en la carpeta de instalación de Qt). En fin, cómo hacer esto en Code::Blocks?

Pues vamos a Tools/Configure Tools.../Add y rellenamos:
Citar
Name: MOC
Executable: Path/to/moc.exe (En mi caso: C:\QtSDK\Desktop\Qt\4.8.1\mingw\bin\moc.exe)
Parameters: ${ACTIVE_EDITOR_FILENAME} -o  moc_${ACTIVE_EDITOR_STEM}.cpp
Working Directory: ${PROJECT_DIR}

Y esto nos generará el archivo que necesitamos, basta con tener abierto el header y ejecutar la tool. Acto seguido, incluimos éste nuevo archivo al proyecto de Code::Blocks y compilamos, y si todo ha ido bien, deberían desaperecer esos horribles y tenebrosos "Undefined reference to 'vtable'" que tanto me han perturbado estos últimos días xD

Espero les sirva

EDIT: Es necesario crear un proyecto de Qt4 (No funciona con Empty file)

Fuente: http://forums.codeblocks.org/index.php?topic=13420.0

Saludos!
#85
Cita de: Dr.Hacker++ en  5 Julio 2012, 22:51 PM
Tienes razón VertexSymphony pero creo que de eso se tienen que dar cuenta ellos.

y tú
#86
Tan solo es necesario que se limpie el paquete del cliente, en el server es prescindible.

yo precisamente hacia ésto al contrario: solo lo limpiaba en el server xD
#87
Tú code presenta un fallo al hacer una segunda suma:
El cliente envía los 2 nuevos sumandos pero el server sólo imprime el resultado de la primera suma, una y otra vez, en lugar de la nueva suma.

Saludos
#88
Solucionado, aquí dejo la forma en que lo conseguí;

El .sh que corro para ejecutar el servidor usa el comando screen, lo que me permite retomar el control aún cerrando la conexión SSH, basta con hacer screen -ls para ver la lista de procesos, y screen -x 'id' para retomar el proceso deseado.

Adicionalmente, se puede crear un id más "amigable" previamente de ejecutar el proceso con screen -S miserver, y seguidamente ejecutando el .sh (en mi caso), lo que facilita el retomar la screen.

Básicamente lo que se hace es cargar la "pantalla" que previamente se cerró desde el cliente pero cuyo proceso sigue activo en el servidor. De ahí que el comando se llame screen  :laugh:

Saludos
#89
Buenas, tengo un servidor dedicado con ubuntu-desktop10.04, al que conecto mediante SSH y ejecuto un archivo .sh, para correr el ejecutable que vendría a ser el servidor, en éste caso un .jar, a partir de ahí se crea el proceso y todo bien.

El problema llega cuando pierdo la conexión SSH, ya sea por cerrar la consola, apagar mi CPU, o por inactividad, el proceso sigue activo (como debe de ser), pero pierdo el control de tal.

¿cómo podría volver a manejar ese proceso? Sin tener que matarlo y volver a correr el .sh

EDIT1: Según he estado viendo es algo de sesiones, y están registradas en /dev/pts/x dónde x es el id de la sesión, así que lo que necesito es la forma de reabrir una sesión cerrada.

EDIT2: EDIT1 no es la solución.  :-X

Saludos
#90
Cita de: retval en 15 Mayo 2012, 00:39 AM
¿usando firefox 12 es posible saltarse este bloqueo con alguna extensión?

No lo creo ya que dicha lista negra está en los servidores de google y ni siquiera llegan a enviar esos datos