#include <stdio.h> #include <stdlib.h> #include <winsock2.h>
#define IP_DESTINO "000.000.000.000" //La voy cambiando dependiendo de a quien se lo mande para probarlo
void cliente () {
int s; struct sockaddr_in server_addr, client_addr; int dato = 3;
memset ((char *)&client_addr,0, sizeof (client_addr)); client_addr.sin_family = AF_INET; client_addr.sin_port = htons(0); client_addr.sin_addr.s_addr = INADDR_ANY;
s = socket (PF_INET, SOCK_STREAM, IPPROTO_TCP);
memset ((char *)&server_addr,0, sizeof (server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_port = htons (55000); server_addr.sin_addr.s_addr = inet_addr(IP_DESTINO);
connect (s, (struct sockaddr *) &server_addr, sizeof(server_addr));
send(s,(char *)&dato,sizeof(int),0);
printf ("Hecho.\n");
close(s); }
void servidor () {
int msock, ssock, dato, client_len; struct sockaddr_in server_addr, client_addr; memset ((char *)&client_addr,0, sizeof (client_addr));
msock = socket (PF_INET, SOCK_STREAM, IPPROTO_TCP);
memset ((char *)&server_addr,0, sizeof (server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_port = htons (55000); server_addr.sin_addr.s_addr = INADDR_ANY;
bind (msock, (struct sockaddr *) &server_addr, sizeof(server_addr));
listen(msock, 5);
printf ("Ejecutandose...\n");
while (1) {
printf ("Esperando cliente...\n");
client_len = sizeof(client_addr);
ssock = accept (msock, (struct sockaddr *) &client_addr, &client_len);
printf ("Conexion aceptada.\n");
recv(ssock, &dato, sizeof(int), 0);
printf ("Dato: %d\n", dato);
close(ssock); } }
int main() {
int opcion = 0;
WSADATA WSAData; WSAStartup(MAKEWORD(2,2), &WSAData);
printf ("Elije aplicacion:\n1) Cliente\n2) Servidor\n>"); scanf ("%d", &opcion);
if (opcion == 1){ cliente(); } else { servidor(); }
return 0; } |