Visual C++ .NET - probar q funcionan sockets?

 
Vista:
Imágen de perfil de diana

probar q funcionan sockets?

Publicado por diana (13 intervenciones) el 03/10/2007 00:26:58
hola, ya tengo el codigo para crear y abrir el puerto del socket, pero aun asi no me funciona, el programa lo estoy usando en Win XP,como puedo probar q funciona o alguien tiene algun programa de sockets q pues usar para ver si realmente estan funcionando los sockets.
De antemano muchisimas gracias!!
Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Programa de prueba para sockets (Windows XP)

Publicado por Alejandro (265 intervenciones) el 02/02/2024 18:31:45
Para probar la funcionalidad de los sockets en tu programa, puedes utilizar programas adicionales que actúen como clientes y servidores. Aquí hay un ejemplo simple de cómo puedes hacerlo utilizando dos programas en C++ para crear un cliente y un servidor de prueba.

Programa de servidor:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include <iostream>
#include <WinSock2.h>
 
int main() {
    // Inicializar Winsock
    WSADATA wsaData;
    if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) {
        std::cerr << "Error al inicializar Winsock." << std::endl;
        return 1;
    }
 
    // Crear el socket del servidor
    SOCKET serverSocket = socket(AF_INET, SOCK_STREAM, 0);
    if (serverSocket == INVALID_SOCKET) {
        std::cerr << "Error al crear el socket del servidor." << std::endl;
        WSACleanup();
        return 1;
    }
 
    // Configurar la información de dirección del servidor
    sockaddr_in serverAddr;
    serverAddr.sin_family = AF_INET;
    serverAddr.sin_addr.s_addr = INADDR_ANY;
    serverAddr.sin_port = htons(12345); // Puedes cambiar el puerto según sea necesario
 
    // Vincular el socket a la dirección y puerto
    if (bind(serverSocket, (struct sockaddr*)&serverAddr, sizeof(serverAddr)) == SOCKET_ERROR) {
        std::cerr << "Error al vincular el socket a la dirección y puerto." << std::endl;
        closesocket(serverSocket);
        WSACleanup();
        return 1;
    }
 
    // Escuchar conexiones entrantes
    if (listen(serverSocket, SOMAXCONN) == SOCKET_ERROR) {
        std::cerr << "Error al poner el socket en modo escucha." << std::endl;
        closesocket(serverSocket);
        WSACleanup();
        return 1;
    }
 
    std::cout << "Servidor escuchando en el puerto 12345..." << std::endl;
 
    // Aceptar una conexión entrante
    SOCKET clientSocket = accept(serverSocket, NULL, NULL);
    if (clientSocket == INVALID_SOCKET) {
        std::cerr << "Error al aceptar la conexión entrante." << std::endl;
        closesocket(serverSocket);
        WSACleanup();
        return 1;
    }
 
    std::cout << "Cliente conectado." << std::endl;
 
    // Aquí puedes realizar la lógica del servidor, enviar y recibir datos, etc.
 
    // Cerrar sockets y limpiar
    closesocket(clientSocket);
    closesocket(serverSocket);
    WSACleanup();
 
    return 0;
}

Programa de cliente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <iostream>
#include <WinSock2.h>
 
int main() {
    // Inicializar Winsock
    WSADATA wsaData;
    if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) {
        std::cerr << "Error al inicializar Winsock." << std::endl;
        return 1;
    }
 
    // Crear el socket del cliente
    SOCKET clientSocket = socket(AF_INET, SOCK_STREAM, 0);
    if (clientSocket == INVALID_SOCKET) {
        std::cerr << "Error al crear el socket del cliente." << std::endl;
        WSACleanup();
        return 1;
    }
 
    // Configurar la información de dirección del servidor al cual conectar
    sockaddr_in serverAddr;
    serverAddr.sin_family = AF_INET;
    serverAddr.sin_addr.s_addr = inet_addr("127.0.0.1"); // Cambia a la dirección del servidor
    serverAddr.sin_port = htons(12345); // Cambia al puerto del servidor
 
    // Conectar al servidor
    if (connect(clientSocket, (struct sockaddr*)&serverAddr, sizeof(serverAddr)) == SOCKET_ERROR) {
        std::cerr << "Error al conectar al servidor." << std::endl;
        closesocket(clientSocket);
        WSACleanup();
        return 1;
    }
 
    std::cout << "Conectado al servidor." << std::endl;
 
    // Aquí puedes realizar la lógica del cliente, enviar y recibir datos, etc.
 
    // Cerrar socket y limpiar
    closesocket(clientSocket);
    WSACleanup();
 
    return 0;
}

Asegúrate de ejecutar primero el servidor y luego el cliente. También, ten en cuenta que estos programas son muy básicos y solo establecen una conexión. Puedes personalizarlos según tus necesidades y agregar lógica para enviar y recibir datos.

Espero que esto te ayude a probar la funcionalidad de los sockets en tu programa. ¡Buena suerte, Diana!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar