C/Visual C - Sockets en Visual C (IMPORTANTE)

 
Vista:

Sockets en Visual C (IMPORTANTE)

Publicado por Pere (1 intervención) el 28/03/2001 08:29:15
Hola,

Necesito ayuda urgente para realizar un Servidor/Cliente que se comuniquen con sockets con el Visual C 5.0
Si alguien tiene algun ejemplo, necesitaria que me lo pasara lo más rápido posible.

GRACIAS
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

Ejemplo de comunicación cliente-servidor con sockets en Visual C++ 5.0

Publicado por Alejandro (1153 intervenciones) el 11/09/2024 00:18:55
¡Hola, Pere!

Para realizar una comunicación entre un servidor y un cliente utilizando sockets en Visual C++ 5.0, puedes utilizar la biblioteca Winsock. Aquí te proporciono un ejemplo básico de cómo implementar un servidor y un cliente utilizando sockets en Visual C++ 5.0:

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 <winsock.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 dirección del servidor
    sockaddr_in serverAddress;
    serverAddress.sin_family = AF_INET;
    serverAddress.sin_addr.s_addr = INADDR_ANY;
    serverAddress.sin_port = htons(12345); // Puerto de escucha del servidor
 
    // Vincular el socket del servidor a la dirección
    if (bind(serverSocket, (struct sockaddr*)&serverAddress, sizeof(serverAddress)) == SOCKET_ERROR) {
        std::cerr << "Error al vincular el socket del servidor." << std::endl;
        closesocket(serverSocket);
        WSACleanup();
        return 1;
    }
 
    // Escuchar conexiones entrantes
    if (listen(serverSocket, SOMAXCONN) == SOCKET_ERROR) {
        std::cerr << "Error al escuchar conexiones entrantes." << std::endl;
        closesocket(serverSocket);
        WSACleanup();
        return 1;
    }
 
    std::cout << "Servidor iniciado. Esperando conexiones entrantes..." << 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 comunicación con el cliente
 
    // Cerrar los sockets y liberar recursos
    closesocket(clientSocket);
    closesocket(serverSocket);
    WSACleanup();
 
    return 0;
}

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 <winsock.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 dirección del servidor
    sockaddr_in serverAddress;
    serverAddress.sin_family = AF_INET;
    serverAddress.sin_addr.s_addr = inet_addr("127.0.0.1"); // Dirección IP del servidor
    serverAddress.sin_port = htons(12345); // Puerto de escucha del servidor
 
    // Conectar al servidor
    if (connect(clientSocket, (struct sockaddr*)&serverAddress, sizeof(serverAddress)) == SOCKET_ERROR) {
        std::cerr << "Error al conectar al servidor." << std::endl;
        closesocket(clientSocket);
        WSACleanup();
        return 1;
    }
 
    std::cout << "Conexión establecida con el servidor." << std::endl;
 
    // Aquí puedes realizar la comunicación con el servidor
 
    // Cerrar el socket y liberar recursos
    closesocket(clientSocket);
    WSACleanup();
 
    return 0;
}

Recuerda que este es solo un ejemplo básico para que puedas comenzar. Puedes agregar la lógica de comunicación que necesites dentro de los comentarios indicados en el código.

Espero que esto te sea de ayuda. ¡Buena suerte con tu proyecto!

Saludos.
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