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 - kukuruznom

#1
La pregunta se me hace muy general pero en teoria primero debes ver:
1.¿que quieres hacer? : Antes de empezar, mira en qué tipo de programación te interesa. ¿Quieres desarrollar aplicaciones móviles, crear sitios web, trabajar con datos o explorar inteligencia artificial? saber que quieres hacer te ayudara.

2. ¿con que quieres hacer eso?: Existen muchos lenguajes de programación, como Python, JavaScript, Java, C++, entre otros. Lo debes elejir segun que quieres hacer.

3.Tienes que aprender y practicar. Empieza haciendo cosas básicas, por ejemplo: imprimir "Hola Mundo", sumar dos variables, calcular la superficie, el área, etc.
Si sientes que el inglés te complica demasiado, puedes comenzar con pseudocódigo, como Psint, y cuando le agarrado tomado la mano, pasa a Python.
También puedes pedirle a ChatGPT que te enseñe.No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

#2
Dudas y pedidos generales / Re:Certificaciones
Junio 20, 2023, 06:09:23 PM
Si estás interesado en certificaciones como CCNA, Linux (LPI Institute) y Python, tienes varias opciones.

Hay un muchos de recursos disponibles en línea, como Udemy, Coursera y Netacad, que ofrecen cursos y materiales de estudio en tu preparación para las certificaciones que deseas obtener.También puedes ver otros recursos gratuitos, como documentación oficial, tutoriales y comunidades dedicadas a la informática como esta y otras.

Algunos cursos pueden costar una fortuna, especialmente si estás mirando a sitios como PUE o clouftic. Hay opciones más baratas y no necesariamente tienes que vender un riñon :v. Investiga y compara precios antes de decidir.

La elección entre cursos presenciales y en línea, eso depende de tus preferencias.

El aprendizaje continuo y la experiencia práctica son clave en el campo de la informática. Considera involucrarte en proyectos personales o colaborativos para fortalecer tus habilidades y conocimientos prácticos(en git hub y este foro puedes empezar).

investiga las opciones en línea, compara precios y busca opiniones antes de tomar una decisión.Hay muchas formas de avanzar en el mundo de la informática y enfocarte en lo que más te interesa.

Espero que te valla bien ;D
#3
No tengo mucha experiencia con krpano, pero una vez hice un tour de una escuela utilizando la cámara panorámica de mi celular jaja.
Echa un vistazo a su video. Lo único que hice fue editar los títulos en el código XML y el resultado quedó bastante bien.
espero que te sirva  ;D
#4
Hola, tengo un problema, bueno, muchos problemas con Winsock. Ya he programado algo similar una vez en Linux y no me pareció tan complicado. El problema es que ahora, aunque el servidor compila correctamente, no reenvía los mensajes, o no sé qué es lo que realmente está funcionando mal.
Obtuve gran parte de la información de aquí: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta.
Intenté utilizar ChatGPT y Perplexity, pero tampoco resolvieron nada.
Encontré esto, pero es de hace más de diez años: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta.
Y lo que encontré que sí funciona es para Linux.
A continuacion les dejo mi codigo:
server:
Código: php
#include <iostream>
#include <winsock2.h>
#include <ws2tcpip.h>
#include <string>
#include <vector>
#include <memory>

#pragma comment(lib, "ws2_32.lib")

#define DEFAULT_BUFLEN 512

using namespace std;

int main() {
    WSADATA wsaData;
    int iResult = WSAStartup(MAKEWORD(2, 2), &wsaData);
    if (iResult != 0) {
        cerr << "WSAStartup falló: " << iResult << endl;
        return 1;
    }

    string ipAddress;
    string port;

    cout << "Ingrese la dirección IP del servidor: ";
    cin >> ipAddress;

    cout << "Ingrese el puerto del servidor: ";
    cin >> port;

    struct addrinfo* result = NULL;
    struct addrinfo hints;

    ZeroMemory(&hints, sizeof(hints));
    hints.ai_family = AF_INET;
    hints.ai_socktype = SOCK_STREAM;
    hints.ai_protocol = IPPROTO_TCP;
    hints.ai_flags = AI_PASSIVE;

    iResult = getaddrinfo(ipAddress.c_str(), port.c_str(), &hints, &result);
    if (iResult != 0) {
        cerr << "getaddrinfo falló: " << iResult << endl;
        WSACleanup();
        return 1;
    }

    SOCKET ListenSocket = socket(result->ai_family, result->ai_socktype, result->ai_protocol);
    if (ListenSocket == INVALID_SOCKET) {
        cerr << "Error en socket(): " << WSAGetLastError() << endl;
        freeaddrinfo(result);
        WSACleanup();
        return 1;
    }

    iResult = bind(ListenSocket, result->ai_addr, (int)result->ai_addrlen);
    if (iResult == SOCKET_ERROR) {
        cerr << "bind falló con error: " << WSAGetLastError() << endl;
        freeaddrinfo(result);
        closesocket(ListenSocket);
        WSACleanup();
        return 1;
    }

    freeaddrinfo(result);

    iResult = listen(ListenSocket, SOMAXCONN);
    if (iResult == SOCKET_ERROR) {
        cerr << "listen falló con error: " << WSAGetLastError() << endl;
        closesocket(ListenSocket);
        WSACleanup();
        return 1;
    }

    cout << "Servidor iniciado. Esperando conexiones en " << ipAddress << ":" << port << "..." << endl;

    vector<unique_ptr<SOCKET>> clientSockets;

    while (true) {
        SOCKET ClientSocket = accept(ListenSocket, NULL, NULL);
        if (ClientSocket == INVALID_SOCKET) {
            cerr << "accept falló: " << WSAGetLastError() << endl;
            closesocket(ListenSocket);
            WSACleanup();
            return 1;
        }

        clientSockets.push_back(make_unique<SOCKET>(ClientSocket));

        cout << "Cliente conectado." << endl;

        string nickname;
        char recvbuf[DEFAULT_BUFLEN];
        int iSendResult;

        iResult = recv(ClientSocket, recvbuf, DEFAULT_BUFLEN, 0);
        if (iResult > 0) {
            recvbuf[iResult] = '\0';
            nickname = recvbuf;
            cout << "Nickname del cliente: " << nickname << endl;
        }

        for (auto it = clientSockets.begin(); it != clientSockets.end(); ++it) {
            if (**it != ClientSocket) {
                string message = nickname + " se ha conectado.";
                iSendResult = send(**it, message.c_str(), message.size(), 0);
                if (iSendResult == SOCKET_ERROR) {
                    cerr << "send falló: " << WSAGetLastError() << endl;
                    closesocket(**it);
                    clientSockets.erase(it);
                }
            }
        }

        while (true) {
            iResult = recv(ClientSocket, recvbuf, DEFAULT_BUFLEN, 0);
            if (iResult > 0) {
                recvbuf[iResult] = '\0';
                string message = nickname + ": " + recvbuf;
                for (auto it = clientSockets.begin(); it != clientSockets.end(); ++it) {
                    if (**it != ClientSocket) {
                        iSendResult = send(**it, message.c_str(), message.size(), 0);
                        if (iSendResult == SOCKET_ERROR) {
                            cerr << "send falló: " << WSAGetLastError() << endl;
                            closesocket(**it);
                            clientSockets.erase(it);
                        }
                    }
                }
            }
            else if (iResult == 0) {
                cout << "Cliente desconectado." << endl;
                for (auto it = clientSockets.begin(); it != clientSockets.end(); ++it) {
                    if (**it != ClientSocket) {
                        string message = nickname + " se ha desconectado.";
                        iSendResult = send(**it, message.c_str(), message.size(), 0);
                        if (iSendResult == SOCKET_ERROR) {
                            cerr << "send falló: " << WSAGetLastError() << endl;
                            closesocket(**it);
                            clientSockets.erase(it);
                        }
                    }
                }
                closesocket(ClientSocket);
                break;
            }
            else {
                cerr << "recv falló: " << WSAGetLastError() << endl;
                closesocket(ClientSocket);
                break;
            }
        }
    }

    WSACleanup();
    return 0;
}
cliente
Código: php
#include <iostream>
#include <winsock2.h>
#include <ws2tcpip.h>
#include <string>

#pragma comment(lib, "ws2_32.lib")

using namespace std;

int main(int argc, char* argv[]) {
    WSADATA wsaData;
    int iResult = WSAStartup(MAKEWORD(2, 2), &wsaData);
    if (iResult != 0) {
        cerr << "WSAStartup falló: " << iResult << endl;
        return 1;
    }

    struct addrinfo* result = NULL, * ptr = NULL, hints;

    ZeroMemory(&hints, sizeof(hints));
    hints.ai_family = AF_UNSPEC;
    hints.ai_socktype = SOCK_STREAM;
    hints.ai_protocol = IPPROTO_TCP;

    string serverIP;
    cout << "Ingrese la IP del servidor: ";
    cin >> serverIP;

    string port;
    cout << "Ingrese el puerto: ";
    cin >> port;

    string nickname;
    cout << "Ingrese el apodo: ";
    cin >> nickname;

    iResult = getaddrinfo(serverIP.c_str(), port.c_str(), &hints, &result);
    if (iResult != 0) {
        cerr << "getaddrinfo falló: " << iResult << endl;
        WSACleanup();
        return 1;
    }

    SOCKET ConnectSocket = INVALID_SOCKET;
    for (ptr = result; ptr != NULL; ptr = ptr->ai_next) {
        ConnectSocket = socket(ptr->ai_family, ptr->ai_socktype, ptr->ai_protocol);
        if (ConnectSocket == INVALID_SOCKET) {
            cerr << "Error en socket(): " << WSAGetLastError() << endl;
            freeaddrinfo(result);
            WSACleanup();
            return 1;
        }

        iResult = connect(ConnectSocket, ptr->ai_addr, (int)ptr->ai_addrlen);
        if (iResult == SOCKET_ERROR) {
            closesocket(ConnectSocket);
            ConnectSocket = INVALID_SOCKET;
            continue;
        }
        break;
    }

    freeaddrinfo(result);

    if (ConnectSocket == INVALID_SOCKET) {
        cerr << "¡No se pudo conectar al servidor!" << endl;
        WSACleanup();
        return 1;
    }

    cout << "Conectado al servidor." << endl;

    iResult = send(ConnectSocket, nickname.c_str(), nickname.size(), 0);
    if (iResult == SOCKET_ERROR) {
        cerr << "send falló: " << WSAGetLastError() << endl;
        closesocket(ConnectSocket);
        WSACleanup();
        return 1;
    }

    char recvbuf[512];
    int iSendResult;

    while (true) {
        string message;
        getline(cin, message);
        message = nickname + ": " + message;
        iResult = send(ConnectSocket, message.c_str(), message.size(), 0);
        if (iResult == SOCKET_ERROR) {
            cerr << "send falló: " << WSAGetLastError() << endl;
            closesocket(ConnectSocket);
            WSACleanup();
            return 1;
        }
    }

    iResult = shutdown(ConnectSocket, SD_SEND);
    if (iResult == SOCKET_ERROR) {
        cerr << "shutdown falló: " << WSAGetLastError() << endl;
        closesocket(ConnectSocket);
        WSACleanup();
        return 1;
    }

    closesocket(ConnectSocket);
    WSACleanup();

    return 0;
}
Si alguien conoce otra forma de hacerlo sin Winsock o lo ha hecho antes, estaría agradecido si pudiera ver cómo lo hicieron.
#5
De aqui puedes descargar el paquete.
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Para descomprimirlo, debes utilizar el mismo nombre del archivo que descargaste.
#6
No tienes permitido ver los links. Registrarse o Entrar a mi cuentatengo una duda cual es el nombre del paquete
Pero si en tu post dices que no te deja instalar nada, ¿a qué específicamente te refieres con "no te deja instalar"?
Según lo que entendi, deberías instalar dpkg, que es el gestor de paquetes. Intenta acceder a la ubicación del archivo.
También podrías intentar con este comando:
Código: php
sudo apt --fix-broken install
En este punto, no sé qué más podrías hacer, ya que el gestor de paquetes no funciona. Desde mi punto de vista, la única opción que queda es instalarlo manualmente. Debes buscar en
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
El paquete dpkg y descargarlo. Luego, sigue estos pasos:
1. Descomprime el archivo
Código: php
tar -zxvf dpkg-x.x.tar.gz
2. Configura el paquete:
Código: php
./configure
3. Compila el paquete:
Código: php
make
4. Instala el paquete:
Código: php
sudo make install
Espero que te sirva.
#7
Quizá haya ocurrido un error con el gestor de paquetes. Prueba borrando con este comando.
Código: php
sudo rm /var/lib/dpkg/lock-frontend
Y luego vuelve a instalar.
Código: php
sudo apt install nombre_del_paquete
Si no funciona, intenta.
Código: php
sudo fuser -vki /var/lib/dpkg/lock-frontend