C/Visual C - Socekt

 
Vista:

Socekt

Publicado por Israel Carreño (3 intervenciones) el 19/07/2002 00:48:56
alguien tiene por ahi un ejemplo sencillo de un socket utilizando winsock 1.1
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 sencillo de un socket utilizando Winsock 1.1

Publicado por Alejandro (913 intervenciones) el 11/03/2025 18:16:56
A continuación, te presento un ejemplo básico de cómo crear un socket utilizando la API de Winsock 1.1 en C. Este ejemplo incluye la creación de un socket, la conexión a un servidor y el envío de un mensaje.

1. Configuración del entorno


Asegúrate de tener configurado tu entorno de desarrollo para usar Winsock. Necesitarás incluir la biblioteca `wsock32.lib` en tu proyecto.

2. Código de ejemplo



Aquí tienes un ejemplo simple de un cliente que se conecta a un servidor y envía un mensaje:

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
#include <winsock.h>
#include <stdio.h>
 
#pragma comment(lib, "wsock32.lib")
 
int main() {
    WSADATA wsaData;
    SOCKET sock;
    struct sockaddr_in server;
    char *message;
    int send_result;
 
    // Inicializar Winsock
    if (WSAStartup(MAKEWORD(1, 1), &wsaData) != 0) {
        printf("Fallo en la inicialización de Winsock. Error: %d\n", WSAGetLastError());
        return 1;
    }
 
    // Crear el socket
    sock = socket(AF_INET, SOCK_STREAM, 0);
    if (sock == INVALID_SOCKET) {
        printf("No se pudo crear el socket. Error: %d\n", WSAGetLastError());
        WSACleanup();
        return 1;
    }
 
    // Configurar la estructura del servidor
    server.sin_family = AF_INET;
    server.sin_port = htons(8888); // Puerto del servidor
    server.sin_addr.s_addr = inet_addr("127.0.0.1"); // Dirección IP del servidor
 
    // Conectar al servidor
    if (connect(sock, (struct sockaddr *)&server, sizeof(server)) < 0) {
        printf("Conexión fallida. Error: %d\n", WSAGetLastError());
        closesocket(sock);
        WSACleanup();
        return 1;
    }
 
    // Mensaje a enviar
    message = "Hola, servidor!";
 
    // Enviar el mensaje
    send_result = send(sock, message, strlen(message), 0);
    if (send_result == SOCKET_ERROR) {
        printf("Error al enviar el mensaje. Error: %d\n", WSAGetLastError());
    } else {
        printf("Mensaje enviado: %s\n", message);
    }
 
    // Cerrar el socket
    closesocket(sock);
    WSACleanup();
    return 0;
}

Explicación del código:


1. Inicialización de Winsock: Se llama a `WSAStartup()` para inicializar la biblioteca Winsock.
2. Creación del socket: Se utiliza `socket()` para crear un socket TCP.
3. Configuración del servidor: Se configura la estructura `sockaddr_in` con la dirección IP y el puerto del servidor.
4. Conexión al servidor: Se llama a `connect()` para establecer la conexión con el servidor.
5. Envío de un mensaje: Se utiliza `send()` para enviar un mensaje al servidor.
6. Cierre del socket: Se cierra el socket y se limpia Winsock con `WSACleanup()`.

Notas:


- Asegúrate de que el servidor esté en ejecución y escuchando en el puerto especificado (en este caso, el puerto 8888) antes de ejecutar el cliente.
- Este ejemplo es básico y no incluye manejo de errores exhaustivo ni recepción de datos del servidor. Puedes expandirlo según tus necesidades.

¡Buena suerte, Israel!
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