Informática en general > Servidores

 Como enviar un dato a traves de sockets en windows c++

(1/1)

noob.9412:
 :ayuda:Hola colegas pasa que yo hice un programa cliente-servidor en donde el cliente se conecta al servidor y si el cliente lo desea se conecta. Entonces los programas se envian entre si unas cadenas de caracteres. Pero ahora que pasa si quiero enviar por ejemplo una varible de tipo int o de algun otro tipo? , como lo hago ? . Por favor si alguien sabe como se hace que por favor me ayude. Aqui les dejo el codigo fuente del cliente y el servidor. Pueden ejecutar el programa en su misma pc:

.:SERVIDOR:.

servidor.cpp


--- Código: C++ --- #include "stdafx.h" using namespace std;char mensaje[500]="Oscar Julio Acosta Gonzalez";char mensaje2[500]; void main(){        int respuesta;        WSAData wsaData;        WORD DLLVERSION;        DLLVERSION = MAKEWORD(2,1);         respuesta = WSAStartup(DLLVERSION, &wsaData);         SOCKADDR_IN addr;        int addrlen = sizeof(addr);        SOCKET sListen;        SOCKET sConnect;         sConnect = socket(AF_INET,SOCK_STREAM,NULL);        addr.sin_addr.s_addr = inet_addr("192.168.1.1");        addr.sin_family = AF_INET;        addr.sin_port = htons(1234);         sListen = socket(AF_INET,SOCK_STREAM,NULL);        bind(sListen, (SOCKADDR*) &addr, sizeof(addr));        listen(sListen, SOMAXCONN);          for(;;){                 cout << "Esperando por conexiones entrantes" << endl;                 if(sConnect = accept(sListen,(SOCKADDR*)&addr,&addrlen))                {                        cout << "Una conection fue encontrada" << endl;                        respuesta = send(sConnect,mensaje,100,NULL);                        respuesta = recv(sConnect,mensaje,sizeof(mensaje),NULL);                 }         }  }      
LIBRERIAS NECESARIAS


--- Código: C++ ---stdafx.h // stdafx.h: archivo de inclusión de los archivos de inclusión estándar del sistema// o archivos de inclusión específicos de un proyecto utilizados frecuentemente,// pero rara vez modificados// #pragma once#pragma comment(lib,"Ws2_32.lib") ;#include "targetver.h"#include <tchar.h>#include <sdkddkver.h>#include <conio.h>#include <stdio.h>#include <WinSock2.h>#include <Windows.h>#include <iostream>   // TODO: mencionar aquí los encabezados adicionales que el programa necesita 
--------------------------------------------------------------------------------------------

.:CLIENTE:.

cliente.cpp


--- Código: C++ ---#include "stdafx.h" using namespace std;string confirm;string strmensaje;char mensaje[500];char mensaje2[500]="Mensaje Recivido"; void main(){        int respuesta;        WSAData wsaData;        WORD DLLVersion;        DLLVersion = MAKEWORD(2,1,);        respuesta = WSAStartup(DLLVersion, &wsaData);         SOCKADDR_IN addr;        int addrlen = sizeof(addr);        SOCKET sConnect;         sConnect = socket(AF_INET,SOCK_STREAM,NULL);        addr.sin_addr.s_addr = inet_addr("192.168.1.1");        addr.sin_family = AF_INET;        addr.sin_port = htons(1234);         cout << "Quieres conectarte al servidor? [S/N]" << endl;        cin >> confirm;         if(confirm== "N")        {                exit(1);        }        else        {                if(confirm == "S")                {                        connect(sConnect,(SOCKADDR*)&addr, sizeof(addr));                        respuesta = recv(sConnect,mensaje,sizeof(mensaje),NULL);                        respuesta = send(sConnect,mensaje2,100,NULL);                        strmensaje = mensaje;                        cout << strmensaje << endl;                         getchar();                }        }         getchar();} 

LIBRERIAS NECESARIAS


--- Código: C++ ---stdafx.h  // stdafx.h: archivo de inclusión de los archivos de inclusión estándar del sistema// o archivos de inclusión específicos de un proyecto utilizados frecuentemente,// pero rara vez modificados// #pragma once#pragma comment(lib,"Ws2_32.lib") #include "targetver.h"#include <stdio.h>#include <tchar.h>#include <sdkddkver.h>#include <iostream>#include <WinSock2.h>#include <Windows.h>#include <string>     // TODO: mencionar aquí los encabezados adicionales que el programa necesita 

diego.martinez:
send puede enviar datos binarios, solo tienes que pasarle el puntero del dato y el tamaño

send(sConnect,&dato, sizeof(dato),0); por ejemplo

otra opcion, sencilla, seria usar Base64 para convertir los datos en strings... pero lo primero es mejor idea :D :yes:

Navegación

[0] Índice de Mensajes

Ir a la versión completa