Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Belial & Grimoire en 21 Julio 2013, 02:50 am



Título: porque no funciona send() y recv()?
Publicado por: Belial & Grimoire en 21 Julio 2013, 02:50 am
hola

estaba haciendo un socket sencillo e windows y se conecta bien pero cuando uso send() y recv() no me aparece nada  :huh:  :huh:, me podrian decir que podria estar mal, llevo un tiempo sin usar C y sockets pero no creo que se me haya olvidado como hacerlo jeje, a ver si le encuentran algo mal, porque ya lo revise y no recuerdo haber olvidado algo

solo era conectarse entre sockets y mandan un "hola mundo"

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <winsock2.h>
  4.  
  5. int main()
  6. {
  7.    WSADATA wsa;
  8. SOCKET sock;
  9. struct sockaddr_in cl;
  10. int co = 0;
  11. char buff[50];
  12.  
  13. WSAStartup(MAKEWORD(2,2), &wsa);
  14. sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
  15.  
  16. cl.sin_family = AF_INET;
  17. cl.sin_port = htons(8889);
  18. cl.sin_addr.s_addr = INADDR_ANY;
  19.  
  20. if(bind(sock, (struct sockaddr*)&cl, sizeof(struct sockaddr)) == -1){
  21.    printf("error bind");
  22. }
  23.  
  24. if(listen(sock, 1) == -1){
  25.  
  26.    printf("error listen");
  27. }
  28.  
  29. co = sizeof(struct sockaddr);
  30.  
  31. if((accept(sock, (struct sockaddr*)&cl, &co)) == -1){
  32.        accept(sock, (struct sockaddr*)&cl, &co);
  33.  
  34.        }
  35.  
  36. recv(sock, buff, sizeof(buff), 0);
  37. printf("%s", buff);
  38.  
  39.  
  40. return 0;
  41. }
  42.  

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <winsock2.h>
  4.  
  5. int main()
  6. {
  7.    WSADATA wsa;
  8.    SOCKET fd;
  9.    struct sockaddr_in cli;
  10.    struct hostent* he;
  11.    char buff[50] = "hola mundo";
  12.  
  13.    WSAStartup(MAKEWORD(2,2), &wsa);
  14.    he = gethostbyname("127.0.0.1");
  15.    if((fd=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) != 0){
  16.  
  17.        printf("resultado %d", fd);
  18.    }
  19.  
  20.    cli.sin_family = AF_INET;
  21.    cli.sin_port = htons(8889);
  22.    cli.sin_addr = *((struct in_addr*)he->h_addr);
  23.    memset(cli.sin_zero, 8, 0);
  24.  
  25.    connect(fd, (struct sockaddr*)&cli, sizeof(struct sockaddr));
  26.  
  27.    send(fd, buff, strlen(buff), 0);
  28.  
  29.    return 0;
  30. }
  31.  


Título: Re: porque no funciona send() y recv()?
Publicado por: Belial & Grimoire en 21 Julio 2013, 04:12 am
ya lo arregle, olvide agregar a socket accept

socket = accept(socket,0, 0);