C/Visual C - Comunicacion en C++ MFC

 
Vista:

Comunicacion en C++ MFC

Publicado por Juan Guillermo (1 intervención) el 28/11/2002 02:09:08
Estoy programando en Visual C++, con la libreria MFC y necesitaria saber la clase que maneja la comunicacion entre equipos (PC), o alguna funcion de comunicacion en una red...(para conectar una Notebook con un celular con un PC como servidor)
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

Comunicación en red con MFC

Publicado por Alejandro (913 intervenciones) el 10/04/2025 20:14:37
Juan, en Visual C++ utilizando la biblioteca MFC (Microsoft Foundation Class), puedes utilizar las clases `CAsyncSocket` y `CSocket` para manejar la comunicación en red entre equipos. Estas clases encapsulan la API de Windows Sockets, facilitando la implementación de la comunicación de red en tus aplicaciones.

1. Clase `CAsyncSocket`:


- Descripción: `CAsyncSocket` es una clase que proporciona una interfaz flexible para manejar eventos de red de manera asíncrona. Es ideal para aplicaciones que requieren una respuesta rápida y no bloqueante.
- Uso: Puedes crear un objeto de esta clase para manejar conexiones, enviar y recibir datos.

Ejemplo básico de uso de `CAsyncSocket`:



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
#include <afxwin.h>
#include <afxsock.h>
 
class CMySocket : public CAsyncSocket {
public:
    void OnReceive(int nErrorCode) override {
        // Manejar la recepción de datos
        char buffer[1024];
        int nBytesReceived = Receive(buffer, sizeof(buffer));
        if (nBytesReceived > 0) {
            buffer[nBytesReceived] = '\0'; // Asegurarse de que el buffer sea una cadena
            AfxMessageBox(CString(buffer)); // Mostrar los datos recibidos
        }
        CAsyncSocket::OnReceive(nErrorCode);
    }
};
 
class CMyApp : public CWinApp {
public:
    BOOL InitInstance() override {
        AfxSocketInit(); // Inicializar la biblioteca de sockets
        CMySocket mySocket;
        mySocket.Create(); // Crear el socket
        mySocket.Connect("192.168.1.100", 12345); // Conectar al servidor
        return TRUE;
    }
};
 
CMyApp theApp;

2. Clase `CSocket`:


- Descripción: `CSocket` es una clase de nivel más alto que simplifica el uso de sockets. Es más fácil de usar que `CAsyncSocket`, pero no ofrece la misma flexibilidad para manejar eventos asíncronos.
- Uso: Ideal para aplicaciones más simples donde no se requiere un manejo complejo de eventos.

Ejemplo básico de uso de `CSocket`:



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
#include <afxwin.h>
#include <afxsock.h>
 
class CMySocket : public CSocket {
public:
    void OnReceive(int nErrorCode) override {
        // Manejar la recepción de datos
        char buffer[1024];
        int nBytesReceived = Receive(buffer, sizeof(buffer));
        if (nBytesReceived > 0) {
            buffer[nBytesReceived] = '\0'; // Asegurarse de que el buffer sea una cadena
            AfxMessageBox(CString(buffer)); // Mostrar los datos recibidos
        }
        CSocket::OnReceive(nErrorCode);
    }
};
 
class CMyApp : public CWinApp {
public:
    BOOL InitInstance() override {
        AfxSocketInit(); // Inicializar la biblioteca de sockets
        CMySocket mySocket;
        mySocket.Create(); // Crear el socket
        mySocket.Connect("192.168.1.100", 12345); // Conectar al servidor
        return TRUE;
    }
};
 
CMyApp theApp;

Consideraciones:


- Inicialización de sockets: Asegúrate de llamar a `AfxSocketInit()` antes de usar cualquier clase de socket.
- Dirección IP y puerto: Cambia `"192.168.1.100"` y `12345` por la dirección IP y el puerto del servidor al que deseas conectarte.
- Manejo de errores: Implementa un manejo adecuado de errores para las operaciones de red.

Con estas clases, podrás establecer una comunicación entre tu PC y otros dispositivos, como un celular o una notebook, utilizando MFC en Visual C++.
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