muy buena info
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Páginas1
#1
Tutoriales y Manuales de Malwares / Re:Archivos CPL: mecanismo para propagar malware
Marzo 11, 2015, 01:03:20 AM #2
Dudas y pedidos generales / Ayuda a crear chat cliente servidor con sockets en lenguaje c
Septiembre 27, 2014, 12:31:38 PM
hola, mu buenas tardes , tengo este codigo y quiero hacer apartir de el un chat, por ahora que solo se conecte con el servidor y hable con el , pero no se porque en la parte del cliente se queda pegado en el while de la funcion recv y ninguno de los dos recive los mensajes enviados,espero de puedan ayudar . aqui el codigo. es echo para windows.
CLIENTE
Código: c
SERVIDOR
Código: c
CLIENTE
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
char SendBuff[512],RecvBuff[512]="";
int main(int argc, char *argv[]){
WSADATA wsaData;
SOCKET conn_socket;
struct sockaddr_in server;
struct hostent *hp;
int resp;
//Inicializamos la DLL de sockets
resp=WSAStartup(MAKEWORD(2,0),&wsaData);
if(resp){
printf("Error al inicializar socket\n");
getchar();return -1;
}
//Obtenemos la IP del servidor... en este caso
// localhost indica nuestra propia máquina...
hp=(struct hostent *)gethostbyname("localhost");
if(!hp){
printf("No se ha encontrado servidor...\n");
getchar();WSACleanup();return WSAGetLastError();
}
// Creamos el socket...
conn_socket=socket(AF_INET,SOCK_STREAM, 0);
if(conn_socket==INVALID_SOCKET) {
printf("Error al crear socket\n");
getchar();WSACleanup();return WSAGetLastError();
}
memset(&server, 0, sizeof(server)) ;
memcpy(&server.sin_addr, hp->h_addr, hp->h_length);
server.sin_family = hp->h_addrtype;
server.sin_port = htons(6000);
// Nos conectamos con el servidor...
if(connect(conn_socket,(struct sockaddr *)&server,sizeof(server))==SOCKET_ERROR){
printf("Fallo al conectarse con el servidor\n");
closesocket(conn_socket);
WSACleanup();getchar();return WSAGetLastError();
}
printf("Conexión establecida con: %s\n", inet_ntoa(server.sin_addr));
while(1){
char cadena[50];
char *p;
printf("enviando mensaje \n");
p = gets(cadena);
printf("Datos eniados: %s \n", p);
strcpy(SendBuff,p);
printf("Datos eniados2: %s \n", SendBuff);
send(conn_socket,SendBuff,sizeof(SendBuff),0);
printf("Recibiendo Mensaje... \n");
recv(conn_socket,RecvBuff, sizeof(RecvBuff), 0);
printf("Datos recibidos: %s \n", RecvBuff);
}
getchar();
// Cerramos el socket y liberamos la DLL de sockets
closesocket(conn_socket);
WSACleanup();
return EXIT_SUCCESS;
}
SERVIDOR
#include <stdio.h>
#include <windows.h>
char SendBuff[512],RecvBuff[512];
int main(int argc, char *argv[]){
WSADATA wsaData;
SOCKET conn_socket,comm_socket;
SOCKET comunicacion;
struct sockaddr_in server;
struct sockaddr_in client;
struct hostent *hp;
int resp,stsize;
char mensaje[512];
//Inicializamos la DLL de sockets
resp=WSAStartup(MAKEWORD(2,0),&wsaData);
if(resp){
printf("Error al inicializar socket\n");
getchar();return resp;
}
//Obtenemos la IP que usará nuestro servidor...
// en este caso localhost indica nuestra propia máquina...
hp=(struct hostent *)gethostbyname("localhost");
if(!hp){
printf("No se ha encontrado servidor...\n");
getchar();WSACleanup();return WSAGetLastError();
}
// Creamos el socket...
conn_socket=socket(AF_INET,SOCK_STREAM, 0);
if(conn_socket==INVALID_SOCKET) {
printf("Error al crear socket\n");
getchar();WSACleanup();return WSAGetLastError();
}
memset(&server, 0, sizeof(server)) ;
memcpy(&server.sin_addr, hp->h_addr, hp->h_length);
server.sin_family = hp->h_addrtype;
server.sin_port = htons(6000);
// Asociamos ip y puerto al socket
resp=bind(conn_socket, (struct sockaddr *)&server, sizeof(server));
if(resp==SOCKET_ERROR){
printf("Error al asociar puerto e ip al socket\n");
closesocket(conn_socket);WSACleanup();
getchar();return WSAGetLastError();
}
if(listen(conn_socket, 1)==SOCKET_ERROR){
printf("Error al habilitar conexiones entrantes\n");
closesocket(conn_socket);WSACleanup();
getchar();return WSAGetLastError();
}
// Aceptamos conexiones entrantes
printf("Esperando conexiones entrantes... \n");
stsize=sizeof(struct sockaddr);
comm_socket=accept(conn_socket,(struct sockaddr *)&client,&stsize);
if(comm_socket==INVALID_SOCKET){
printf("Error al aceptar conexión entrante\n");
closesocket(conn_socket);WSACleanup();
getchar();return WSAGetLastError();
}
printf("Conexión entrante desde: %s\n", inet_ntoa(client.sin_addr));
while(1){
char cadena[50];
char *p;
printf("enviando mensaje \n");
p = gets(cadena);
printf("Datos io: %s \n", p);
strcpy(SendBuff,p);
send(conn_socket,SendBuff,sizeof(SendBuff),0);
printf("Datos enviados: %s \n", SendBuff);
recv(conn_socket,RecvBuff, sizeof(RecvBuff), 0);
printf("Datos recibidos: %s \n", RecvBuff);
}
getchar();
// Cerramos el socket de la comunicacion
closesocket(comm_socket);
// Cerramos liberia winsock
WSACleanup();
return (EXIT_SUCCESS);
}
#3
Cursos, manuales y libros / Re:Programación de Socket
Agosto 20, 2014, 06:30:55 PM
Muy bueno lo voy a leer
#4
Otros lenguajes / Re:Sistema Experto en Swi Prolog
Agosto 20, 2014, 05:55:12 PM
wow muy interesante todo, tienes algún pdf o web donde contengan cursos para hacer IA o un sistema experto?
#5
Dudas y pedidos generales / Ayuda flags en lenguaje c bajo windows
Agosto 20, 2014, 01:16:07 PM
Recientemente me propuse aprender a programar o mejor dicho usar las FLAGS TCP en windows pero todo lo que consigo sobre esto es mas que todo orientado a linux, un ejemplo que conseguí en un tutorial es este Código: c
leei en otras partes y dicen que tengo que usar las librerías winsock.h & winsock2.h pero la verdad cada ves que lo ago me da error y no es porque no esten bien linkiadas las cabeceras :/
a el ejemplo es para ver que puertos están abiertos local mente.
/* connect.c */
#include<stdio.h>
#include<netinet/in.h>
#include<netdb.h> /* gethostbyname() */
#include<sys/types.h>
#include<sys/socket.h>
main(int argc, char **argv)
{
struct sockaddr_in target;
struct hostent *target_name;
int socket_fd; /* descriptor del socket */
if(argc!=3)
exit(printf("Uso: %s host|ip puerto\n",argv[0]));
target_name=gethostbyname(argv[1]); /*estructura hostent*/
/* ESTRUCTURA sockaddr_in A QUIEN QUEREMOS SCANNEAR */
target.sin_family=AF_INET;
target.sin_addr=*((struct in_addr *)target_name->h_addr);
target.sin_port=htons(atoi(argv[2]));
bzero(&(target.sin_zero),8);
/* FIN DEL LLENADO DE LA ESTRUCTURA sockaddr_in */
socket_fd=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
/* Si logramos conectar al puerto de nuestro objetivo, imprime PUERTO ABIERTO, si no... */
if((connect(socket_fd,(struct sockaddr *)&target,sizeof(target)))!=-1)
printf("Puerto %s Abierto\n",argv[2]);
else
printf("Puerto %s Cerrado\n",argv[2]);
close(socket_fd);
return 0;
}
leei en otras partes y dicen que tengo que usar las librerías winsock.h & winsock2.h pero la verdad cada ves que lo ago me da error y no es porque no esten bien linkiadas las cabeceras :/
a el ejemplo es para ver que puertos están abiertos local mente.
#6
Análisis y desarrollo de malwares / Re:Malware "con" CriptoWall
Agosto 19, 2014, 04:17:56 AM
hola disculpa como se llama el programa que usas para ver que hace en si el virus al ejecutarlo??
Páginas1