comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

Ayuda a crear chat cliente servidor con sockets en lenguaje c

  • 0 Respuestas
  • 2326 Vistas

0 Usuarios y 3 Visitantes están viendo este tema.

Desconectado Yukth

  • *
  • Underc0der
  • Mensajes: 6
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« en: 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
  1.  #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <windows.h>
  4.  
  5. char SendBuff[512],RecvBuff[512]="";
  6.  
  7. int main(int argc, char *argv[]){
  8.  
  9.   WSADATA wsaData;
  10.   SOCKET conn_socket;
  11.   struct sockaddr_in server;
  12.   struct hostent *hp;
  13.   int resp;
  14.   //Inicializamos la DLL de sockets
  15.   resp=WSAStartup(MAKEWORD(2,0),&wsaData);
  16.   if(resp){
  17.     printf("Error al inicializar socket\n");
  18.     getchar();return -1;
  19.   }
  20.  
  21.   //Obtenemos la IP del servidor... en este caso
  22.   // localhost indica nuestra propia máquina...
  23.   hp=(struct hostent *)gethostbyname("localhost");
  24.  
  25.   if(!hp){
  26.     printf("No se ha encontrado servidor...\n");
  27.     getchar();WSACleanup();return WSAGetLastError();
  28.   }
  29.  
  30.   // Creamos el socket...
  31.   conn_socket=socket(AF_INET,SOCK_STREAM, 0);
  32.   if(conn_socket==INVALID_SOCKET) {
  33.     printf("Error al crear socket\n");
  34.     getchar();WSACleanup();return WSAGetLastError();
  35.   }
  36.    
  37.   memset(&server, 0, sizeof(server)) ;
  38.   memcpy(&server.sin_addr, hp->h_addr, hp->h_length);
  39.   server.sin_family = hp->h_addrtype;
  40.   server.sin_port = htons(6000);
  41.  
  42.   // Nos conectamos con el servidor...
  43.  
  44.     if(connect(conn_socket,(struct sockaddr *)&server,sizeof(server))==SOCKET_ERROR){
  45.     printf("Fallo al conectarse con el servidor\n");
  46.     closesocket(conn_socket);
  47.     WSACleanup();getchar();return WSAGetLastError();
  48.   }
  49.   printf("Conexión establecida con: %s\n", inet_ntoa(server.sin_addr));
  50. while(1){
  51.   char cadena[50];
  52.   char *p;  
  53.   printf("enviando mensaje \n");          
  54.   p = gets(cadena);
  55.   printf("Datos eniados: %s \n", p);
  56.   strcpy(SendBuff,p);
  57.   printf("Datos eniados2: %s \n", SendBuff);
  58.   send(conn_socket,SendBuff,sizeof(SendBuff),0);
  59.   printf("Recibiendo Mensaje... \n");
  60.   recv(conn_socket,RecvBuff, sizeof(RecvBuff), 0);
  61.   printf("Datos recibidos: %s \n", RecvBuff);
  62.  }
  63.  
  64.  
  65.  
  66.   // Cerramos el socket y liberamos la DLL de sockets
  67.   closesocket(conn_socket);
  68.   WSACleanup();
  69.   return EXIT_SUCCESS;
  70. }
  71.  

SERVIDOR

Código: C
  1. #include <stdio.h>
  2. #include <windows.h>
  3.  
  4. char SendBuff[512],RecvBuff[512];
  5.  
  6. int main(int argc, char *argv[]){
  7.  
  8.   WSADATA wsaData;
  9.   SOCKET conn_socket,comm_socket;
  10.   SOCKET comunicacion;
  11.   struct sockaddr_in server;
  12.   struct sockaddr_in client;
  13.   struct hostent *hp;
  14.   int resp,stsize;
  15.  char mensaje[512];
  16.   //Inicializamos la DLL de sockets
  17.   resp=WSAStartup(MAKEWORD(2,0),&wsaData);
  18.   if(resp){
  19.     printf("Error al inicializar socket\n");
  20.     getchar();return resp;
  21.   }
  22.  
  23.   //Obtenemos la IP que usará nuestro servidor...
  24.   // en este caso localhost indica nuestra propia máquina...
  25.   hp=(struct hostent *)gethostbyname("localhost");
  26.  
  27.   if(!hp){
  28.     printf("No se ha encontrado servidor...\n");
  29.     getchar();WSACleanup();return WSAGetLastError();
  30.   }
  31.  
  32.   // Creamos el socket...
  33.   conn_socket=socket(AF_INET,SOCK_STREAM, 0);
  34.   if(conn_socket==INVALID_SOCKET) {
  35.     printf("Error al crear socket\n");
  36.     getchar();WSACleanup();return WSAGetLastError();
  37.   }
  38.  
  39.   memset(&server, 0, sizeof(server)) ;
  40.   memcpy(&server.sin_addr, hp->h_addr, hp->h_length);
  41.   server.sin_family = hp->h_addrtype;
  42.   server.sin_port = htons(6000);
  43.  
  44.   // Asociamos ip y puerto al socket
  45.   resp=bind(conn_socket, (struct sockaddr *)&server, sizeof(server));
  46.   if(resp==SOCKET_ERROR){
  47.     printf("Error al asociar puerto e ip al socket\n");
  48.     closesocket(conn_socket);WSACleanup();
  49.     getchar();return WSAGetLastError();
  50.   }
  51.  
  52.   if(listen(conn_socket, 1)==SOCKET_ERROR){
  53.     printf("Error al habilitar conexiones entrantes\n");
  54.     closesocket(conn_socket);WSACleanup();
  55.     getchar();return WSAGetLastError();
  56.   }
  57.              
  58.   // Aceptamos conexiones entrantes
  59.  
  60.   printf("Esperando conexiones entrantes... \n");
  61.   stsize=sizeof(struct sockaddr);
  62.   comm_socket=accept(conn_socket,(struct sockaddr *)&client,&stsize);
  63.   if(comm_socket==INVALID_SOCKET){
  64.     printf("Error al aceptar conexión entrante\n");
  65.     closesocket(conn_socket);WSACleanup();
  66.     getchar();return WSAGetLastError();
  67.   }
  68.   printf("Conexión entrante desde: %s\n", inet_ntoa(client.sin_addr));
  69.  
  70.   while(1){
  71.   char cadena[50];
  72.   char *p;
  73.   printf("enviando mensaje \n");          
  74.   p = gets(cadena);
  75.   printf("Datos io: %s \n", p);
  76.   strcpy(SendBuff,p);
  77.   send(conn_socket,SendBuff,sizeof(SendBuff),0);
  78.   printf("Datos enviados: %s \n", SendBuff);
  79.   recv(conn_socket,RecvBuff, sizeof(RecvBuff), 0);
  80.   printf("Datos recibidos: %s \n", RecvBuff);
  81. }
  82.   getchar();          
  83.  
  84.   // Cerramos el socket de la comunicacion
  85.   closesocket(comm_socket);
  86.  
  87.   // Cerramos liberia winsock
  88.   WSACleanup();
  89.   return (EXIT_SUCCESS);
  90. }
  91.  
« Última modificación: Septiembre 27, 2014, 12:34:09 pm por Expermicid »

 

¿Te gustó el post? COMPARTILO!



[SOLUCIONADO] Ayuda urgente con Virus "Virus.Win32Sality"

Iniciado por Napsters

Respuestas: 6
Vistas: 3571
Último mensaje Junio 11, 2012, 03:38:18 am
por Satyricon
"ayuda con fruitywifi-karma" no puedo activar el modulo karma.

Iniciado por cristobal92

Respuestas: 4
Vistas: 1374
Último mensaje Agosto 02, 2016, 12:03:45 pm
por cristobal92
Ayuda Metasploit "no session was created"

Iniciado por kush20

Respuestas: 3
Vistas: 475
Último mensaje Junio 03, 2018, 07:18:08 pm
por km0xu95
[SOLUCIONADO] Ayuda Contraseña "Sqlmap"

Iniciado por djtrueno

Respuestas: 1
Vistas: 1389
Último mensaje Enero 17, 2014, 06:07:37 pm
por ANTRAX
[SOLUCIONADO] Ayuda para encontrar "airdecrypt"

Iniciado por Typh0n

Respuestas: 2
Vistas: 3996
Último mensaje Enero 13, 2014, 07:11:18 am
por aika