C/Visual C - hacer net send en C

 
Vista:

hacer net send en C

Publicado por SlumX (1 intervención) el 03/08/2002 16:24:49
Me gustaria k aguien me expicara komo hacer un net send con C porque o he intentado kon la funcion system(" net send * hola"); k mandaria hola a todos los usuarios de una red pero no funciona...
aguien me puede ayudar????
gracias
SumX
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

Envío de mensajes en red con net send

Publicado por Alejandro (913 intervenciones) el 12/03/2025 19:54:33
Para enviar mensajes a otros usuarios en una red utilizando C, la función `system("net send * hola");` puede no funcionar por varias razones, como la configuración del sistema o la falta de permisos. Sin embargo, hay otras formas de lograrlo. Aquí te explico cómo hacerlo utilizando la API de Windows para enviar mensajes a través de la red.

Usando la API de Windows



En lugar de usar `system()`, puedes utilizar la función `NetMessageBufferSend` de la API de Windows. A continuación, te muestro 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
42
#include <windows.h>
#include <lm.h>
#include <stdio.h>
 
#pragma comment(lib, "netapi32.lib")
 
void enviarMensaje(const char* destinatario, const char* mensaje) {
    // Convertir los parámetros a tipos adecuados
    LPWSTR wDestinatario = (LPWSTR)malloc((strlen(destinatario) + 1) * sizeof(WCHAR));
    LPWSTR wMensaje = (LPWSTR)malloc((strlen(mensaje) + 1) * sizeof(WCHAR));
 
    MultiByteToWideChar(CP_ACP, 0, destinatario, -1, wDestinatario, strlen(destinatario) + 1);
    MultiByteToWideChar(CP_ACP, 0, mensaje, -1, wMensaje, strlen(mensaje) + 1);
 
    // Enviar el mensaje
    DWORD resultado = NetMessageBufferSend(
        NULL,                // Nombre del servidor (NULL para local)
        wDestinatario,      // Destinatario
        0,                  // Puerto (0 para el predeterminado)
        wMensaje,           // Mensaje
        (DWORD)(wcslen(wMensaje) + 1) * sizeof(WCHAR) // Longitud del mensaje
    );
 
    if (resultado == NERR_Success) {
        printf("Mensaje enviado a %s: %s\n", destinatario, mensaje);
    } else {
        printf("Error al enviar el mensaje: %d\n", resultado);
    }
 
    // Liberar memoria
    free(wDestinatario);
    free(wMensaje);
}
 
int main() {
    const char* destinatario = "*"; // Enviar a todos los usuarios
    const char* mensaje = "Hola desde C!";
 
    enviarMensaje(destinatario, mensaje);
 
    return 0;
}

Notas importantes:


1. Permisos: Asegúrate de que tienes los permisos necesarios para enviar mensajes en la red. En algunas configuraciones de red, el servicio de mensajería puede estar deshabilitado.
2. Configuración de la red: El servicio de mensajería de Windows (Messenger) debe estar habilitado en las computadoras de destino. Ten en cuenta que en versiones más recientes de Windows, este servicio ha sido descontinuado.
3. Compilación: Asegúrate de compilar tu programa con las bibliotecas necesarias, como `netapi32.lib`.

Alternativa


Si el servicio de mensajería no está disponible, considera usar otras herramientas de mensajería en red, como `msg.exe`, que también permite enviar mensajes a otros usuarios en la red.

Espero que esto te ayude a enviar mensajes en la red. ¡Buena suerte, SlumX!
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