ALGUIEN ME PODRIA AYUDAR CON ESTE TRABAJO.. PORFAVOR ME SERIA DE MUCHA AYUDAR .. EN CLASE ME DIERON ESTE PROGRAMA Y DIJERON K MODIFIKE LOS ERRORES .. SE ESTA TRABAJANDO EN DEV-C++
CLIENTE:
#include <winsock2.h>
#include <winsock.h>
//la cabezera para usar las funciones de winsock
#include <stdio.h>
int main()
{
WSADATA wsa;
SOCKET sock;
struct hostent *host;
struct sockaddr_in direc;
int conex;
char Buffer[1024];
int len;
//Inicializamos
WSAStartup(MAKEWORD(2,2),&wsa);
//resolvemos el nombre de dominio localhost, esto se resolverá a 127.0.0.1
host=gethostbyname("localhost");
//creamos el socket
sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if (sock==-1)
{
printf("Error al crear el socket");
return -1;
}
//Definimos la dirección a conectar que hemos recibido desde el gethostbyname
//y decimos que el puerto al que deberá conectar es el 9999 con el protocolo ipv4
direc.sin_family=AF_INET;
direc.sin_port=htons(9999);
direc.sin_addr = *((struct in_addr *)host->h_addr);
memset(direc.sin_zero,0,8);
//Intentamos establecer la conexión
conex=connect(sock,(sockaddr *)&direc, sizeof(sockaddr));
if (conex==-1) //si no se ha podido conectar porque no se ha encontrado el host o no
//está el puerto abierto
{
printf("No se ha podido conectar\n");
return -1;
}
printf("[enviar]\n");
printf("[escribe el texto a enviar o 'salir' para salir ]\n");
while (len!=-1 && strcmp(Buffer,"salir")!=0) //mientras el socket no se haya desconectado
//y no se escriba salir
{
printf("Texto a enviar:");
fgets(Buffer,1023,stdin); //pedir texto a enviar por pantalla
len=send(sock,Buffer,strlen(Buffer),0); //enviar el texto que se ha introducido
}
return 0;
}
SERVIDOR:
#include <winsock2.h>
#include <winsock.h>
//la cabezera para usar las funciones de winsock
#include <stdio.h>
//#pragma comment(lib,"ws2_32.a")
int main()
{
WSADATA wsa;
SOCKET sock;
struct sockaddr_in local;
int len=0;
char Buffer[1024];
//Inicializamos
WSAStartup(MAKEWORD(2,0),&wsa);
//Creamos el socket
sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
//defnimos dirección por defecto, ipv4 y el puerto 9999
local.sin_family = AF_INET;
local.sin_addr.s_addr = INADDR_ANY;
local.sin_port = htons(9999);
//asociamos el socket al puerto
if (bind(sock, (SOCKADDR*) &local, sizeof(local))==-1)
{
printf("error en el bind\n");
return -1;
}
//ponemos el socket a la escucha
if (listen(sock,1)==-1)
{
printf("error en el listen\n");
return -1;
}
len=sizeof(struct sockaddr);
//hay una conexión entrante y la aceptamos
sock=accept(sock,(SOCKADDR*)&local,&len);
printf("[SERVIDOR]\n");
printf("[Cuando se vaya recibiendo texto aparecera en pantalla ]\n");
while (len!=0) //mientras estemos conectados con el otro pc
{
len=recv(sock,Buffer,1023,0); //recibimos los datos que envie
if (len>0) //si seguimos conectados
{
Buffer[len]=0; //le ponemos el final de cadena
printf("Texto recibido:%s",Buffer); //imprimimos la cadena recibida
}
}
return 0;
}
AGRADECERIA SU AYUDA..!!
CLIENTE:
#include <winsock2.h>
#include <winsock.h>
//la cabezera para usar las funciones de winsock
#include <stdio.h>
int main()
{
WSADATA wsa;
SOCKET sock;
struct hostent *host;
struct sockaddr_in direc;
int conex;
char Buffer[1024];
int len;
//Inicializamos
WSAStartup(MAKEWORD(2,2),&wsa);
//resolvemos el nombre de dominio localhost, esto se resolverá a 127.0.0.1
host=gethostbyname("localhost");
//creamos el socket
sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if (sock==-1)
{
printf("Error al crear el socket");
return -1;
}
//Definimos la dirección a conectar que hemos recibido desde el gethostbyname
//y decimos que el puerto al que deberá conectar es el 9999 con el protocolo ipv4
direc.sin_family=AF_INET;
direc.sin_port=htons(9999);
direc.sin_addr = *((struct in_addr *)host->h_addr);
memset(direc.sin_zero,0,8);
//Intentamos establecer la conexión
conex=connect(sock,(sockaddr *)&direc, sizeof(sockaddr));
if (conex==-1) //si no se ha podido conectar porque no se ha encontrado el host o no
//está el puerto abierto
{
printf("No se ha podido conectar\n");
return -1;
}
printf("[enviar]\n");
printf("[escribe el texto a enviar o 'salir' para salir ]\n");
while (len!=-1 && strcmp(Buffer,"salir")!=0) //mientras el socket no se haya desconectado
//y no se escriba salir
{
printf("Texto a enviar:");
fgets(Buffer,1023,stdin); //pedir texto a enviar por pantalla
len=send(sock,Buffer,strlen(Buffer),0); //enviar el texto que se ha introducido
}
return 0;
}
SERVIDOR:
#include <winsock2.h>
#include <winsock.h>
//la cabezera para usar las funciones de winsock
#include <stdio.h>
//#pragma comment(lib,"ws2_32.a")
int main()
{
WSADATA wsa;
SOCKET sock;
struct sockaddr_in local;
int len=0;
char Buffer[1024];
//Inicializamos
WSAStartup(MAKEWORD(2,0),&wsa);
//Creamos el socket
sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
//defnimos dirección por defecto, ipv4 y el puerto 9999
local.sin_family = AF_INET;
local.sin_addr.s_addr = INADDR_ANY;
local.sin_port = htons(9999);
//asociamos el socket al puerto
if (bind(sock, (SOCKADDR*) &local, sizeof(local))==-1)
{
printf("error en el bind\n");
return -1;
}
//ponemos el socket a la escucha
if (listen(sock,1)==-1)
{
printf("error en el listen\n");
return -1;
}
len=sizeof(struct sockaddr);
//hay una conexión entrante y la aceptamos
sock=accept(sock,(SOCKADDR*)&local,&len);
printf("[SERVIDOR]\n");
printf("[Cuando se vaya recibiendo texto aparecera en pantalla ]\n");
while (len!=0) //mientras estemos conectados con el otro pc
{
len=recv(sock,Buffer,1023,0); //recibimos los datos que envie
if (len>0) //si seguimos conectados
{
Buffer[len]=0; //le ponemos el final de cadena
printf("Texto recibido:%s",Buffer); //imprimimos la cadena recibida
}
}
return 0;
}
AGRADECERIA SU AYUDA..!!