C/Visual C - CD y TCP/IP

 
Vista:

CD y TCP/IP

Publicado por Edu (1 intervención) el 16/11/2001 18:41:33
Necesito saber el código que se utiliza para abrir el CD y también necesitaria saber si se pueden conectar dos ordenadores usando el tcp/ip (naturalmente me gustaria ver el código en C de mis dos problemas), muchas 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

Abrir CD y conexión TCP/IP entre ordenadores en C

Publicado por Alejandro (913 intervenciones) el 22/10/2024 22:27:35
Claro, aquí tienes ejemplos de cómo abrir el CD y cómo conectar dos ordenadores usando TCP/IP en C.

1. Abrir el CD en C



Para abrir la bandeja del CD en Windows, puedes usar la API de Windows. Aquí tienes un ejemplo de cómo hacerlo:

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
#include <windows.h>
#include <stdio.h>
 
void OpenCD() {
    // Obtener el manejador del dispositivo de CD-ROM
    HANDLE hDevice = CreateFile(
        "\\\\.\\E:", // Cambia "E:" por la letra de tu unidad de CD
        GENERIC_READ | GENERIC_WRITE,
        0,
        NULL,
        OPEN_EXISTING,
        0,
        NULL
    );
 
    if (hDevice == INVALID_HANDLE_VALUE) {
        printf("Error al abrir la unidad de CD: %d\n", GetLastError());
        return;
    }
 
    // Enviar el comando para abrir la bandeja
    DWORD bytesReturned;
    DeviceIoControl(
        hDevice,
        IOCTL_STORAGE_EJECT_MEDIA,
        NULL,
        0,
        NULL,
        0,
        &bytesReturned,
        NULL
    );
 
    CloseHandle(hDevice);
    printf("Bandeja de CD abierta.\n");
}
 
int main() {
    OpenCD();
    return 0;
}

2. Conectar dos ordenadores usando TCP/IP



Para establecer una conexión TCP/IP entre dos ordenadores, puedes usar sockets. Aquí tienes un ejemplo básico de un servidor y un cliente en C.

Servidor TCP



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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <winsock2.h>
 
#pragma comment(lib, "ws2_32.lib")
 
#define PORT 8080
 
int main() {
    WSADATA wsaData;
    SOCKET serverSocket, clientSocket;
    struct sockaddr_in serverAddr, clientAddr;
    int addrLen = sizeof(clientAddr);
    char buffer[1024];
 
    // Inicializar Winsock
    WSAStartup(MAKEWORD(2, 2), &wsaData);
 
    // Crear socket
    serverSocket = socket(AF_INET, SOCK_STREAM, 0);
    serverAddr.sin_family = AF_INET;
    serverAddr.sin_addr.s_addr = INADDR_ANY;
    serverAddr.sin_port = htons(PORT);
 
    // Vincular el socket
    bind(serverSocket, (struct sockaddr*)&serverAddr, sizeof(serverAddr));
    listen(serverSocket, 3);
 
    printf("Servidor escuchando en el puerto %d...\n", PORT);
 
    // Aceptar conexión del cliente
    clientSocket = accept(serverSocket, (struct sockaddr*)&clientAddr, &addrLen);
    printf("Cliente conectado.\n");
 
    // Recibir datos
    recv(clientSocket, buffer, sizeof(buffer), 0);
    printf("Mensaje del cliente: %s\n", buffer);
 
    // Cerrar sockets
    closesocket(clientSocket);
    closesocket(serverSocket);
    WSACleanup();
    return 0;
}

Cliente TCP



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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <winsock2.h>
 
#pragma comment(lib, "ws2_32.lib")
 
#define PORT 8080
 
int main() {
    WSADATA wsaData;
    SOCKET sock;
    struct sockaddr_in serverAddr;
    const char* message = "Hola desde el cliente!";
 
    // Inicializar Winsock
    WSAStartup(MAKEWORD(2, 2), &wsaData);
 
    // Crear socket
    sock = socket(AF_INET, SOCK_STREAM, 0);
    serverAddr.sin_family = AF_INET;
    serverAddr.sin_port = htons(PORT);
    serverAddr.sin_addr.s_addr = inet_addr("127.0.0.1"); // Cambia a la IP del servidor
 
    // Conectar al servidor
    connect(sock, (struct sockaddr*)&serverAddr, sizeof(serverAddr));
 
    // Enviar datos
    send(sock, message, strlen(message), 0);
    printf("Mensaje enviado: %s\n", message);
 
    // Cerrar socket
    closesocket(sock);
    WSACleanup();
    return 0;
}

Consideraciones



- Abrir el CD: Asegúrate de que la letra de la unidad de CD sea correcta en el código.
- Conexión TCP/IP: Cambia `inet_addr("127.0.0.1")` en el cliente por la dirección IP del servidor si están en diferentes máquinas.
- Compilación: Asegúrate de tener la biblioteca `ws2_32.lib` vinculada para el uso de sockets.

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