Advertisement
tomasaccini

Untitled

Jul 14th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.74 KB | None | 0 0
  1. int accept_client(const char* port, const char* ip) {
  2.     struct addrinfo *socketinfo;
  3.     getaddrinfo(ip, port, NULL, socketinfo);
  4.     // Asumo que el primer resultado es válido
  5.     sock = socket(socketinfo->ai_family, socketinfo->ai_socktype, socketinfo->ai_protocol);
  6.     bind (sock, socketinfo->ai_addr, socketinfo->ai_addrlen);
  7.     freeaddrinfo(socketinfo);
  8.     listen(sock, QUEUE_SIZE);
  9.     client_sock = accept(sock);
  10.     return client_sock;
  11. }
  12.  
  13. int connect_client(const char* port, const char* ip) {
  14.     struct addrinfo *socketinfo;
  15.     getaddrinfo(ip, port, NULL, socketinfo);
  16.     // Asumo que el primer resultado es válido
  17.     sock = socket(socketinfo->ai_family, socketinfo->ai_socktype, socketinfo->ai_protocol);
  18.     connect(sock, socketinfo->ai_addr, socketinfo->ai_addrlen);
  19.     freeaddrinfo(socketinfo);
  20.     return sock;
  21. }
  22.  
  23. int receive_some(int sock, char* buf, size_t len) {
  24.     return (int)recv(sock, buf, len, 0);
  25. }
  26.  
  27. int receive(int sock, char* buf, size_t len) {
  28.     int leidos = 0;
  29.     while (leidos != len) {
  30.         int recibidos = receive_some(sock, buf[leidos], len - leidos);
  31.         if (recibidos == -1) return -1;
  32.         if (recibidos == 0 ) return 0;
  33.         leidos += recibidos;
  34.     }
  35.     return leidos;
  36. }
  37.  
  38. void shutdown_and_close(int sock) {
  39.     shutdown(sock);
  40.     close(sock);
  41. }
  42.  
  43. int main() {
  44.     char buf[11];
  45.     buf [10] = '\0';
  46.     int sock = connect_client(815, NULL);
  47.     int leidos;
  48.     while (true) {
  49.         if (leidos = receive(sock, buf, 10) <= 0) {
  50.             break;
  51.         }
  52.         for (size_t i = 0; i < leidos; i++) {
  53.             if (buf[i] == 0xff)
  54.                 break;
  55.             printf("%c", buf[i]);
  56.         }
  57.     }
  58.     shutdown_and_close(sock);
  59.     return 0;
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement