Domingo 22 de Diciembre de 2024, 14:41
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Informática en general
»
Servidores
(Moderador:
leandrog
) »
Como enviar un dato a traves de sockets en windows c++
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Como enviar un dato a traves de sockets en windows c++ (Leído 3447 veces)
noob.9412
Nuevo Miembro
Mensajes: 2
Como enviar un dato a traves de sockets en windows c++
«
en:
Viernes 7 de Septiembre de 2012, 21:54 »
0
: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
Tweet
«
última modificación: Viernes 7 de Septiembre de 2012, 21:56 por noob.9412
»
diego.martinez
Miembro MUY activo
Mensajes: 297
Re:Como enviar un dato a traves de sockets en windows c++
«
Respuesta #1 en:
Miércoles 12 de Marzo de 2014, 01:21 »
0
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
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Informática en general
»
Servidores
(Moderador:
leandrog
) »
Como enviar un dato a traves de sockets en windows c++