#include #include #include #include #include #include #include int main(int argc, char *argv[]) { int ID_socket_cli, result; struct sockaddr_in address_ser, address_cli; struct hostent *h; char mensaje[] = "Hola, probando sockets"; if(argc<2) { printf("uso : %s servidor \n", argv[0]); exit(1); } printf("Probando sockets UDP (cliente)\n"); printf("Creando socket... "); ID_socket_cli=socket(AF_INET, SOCK_DGRAM,0); if (ID_socket_cli==-1) { printf("error\n"); exit(-1); } else { printf("ok\n"); } printf("Haciendo bind local... "); address_cli.sin_family = AF_INET; address_cli.sin_addr.s_addr = htonl(INADDR_ANY); address_cli.sin_port = htons(0); result = bind(ID_socket_cli, (struct sockaddr *) &address_cli, sizeof(address_cli)); if (result<0) { printf("error\n"); exit(-1); } else { printf("ok\n"); } h = gethostbyname(argv[1]); printf("Voy a enviar mensaje a %s\n",inet_ntoa(*(struct in_addr *)h->h_addr_list[0])); address_ser.sin_family = h->h_addrtype; memcpy((char *) &address_ser.sin_addr.s_addr, h->h_addr_list[0], h->h_length); address_ser.sin_port = htons(6000); printf("Escribe mensajes a enviar:\n"); do { strcpy(mensaje,""); gets(mensaje); result = sendto(ID_socket_cli, mensaje, strlen(mensaje)+1, 0, (struct sockaddr *) &address_ser, sizeof(address_ser)); if (result<0) { printf("error\n"); exit(-1); } } while(strncmp(mensaje,"fin",3)); return 0; }