В с++ шарю очень мало. Пытаюсь собрать из примеров простую прогу, которая будет слушать AMI Asterisk. После очередной правки кода прога стала производить коннект секунд за 10, а при запуске sleep(1) можно сходить кофе выпить....
В чем причина такого поведения? И может кто подскажет в правильном ли я направлении двигаюсь? В идеале хочу получить «аналог» telnet
#include<stdio.h>
#include<netdb.h>
#include<unistd.h>
#include<string.h>
#include<arpa/inet.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<sys/time.h>
#define MAX_MSG_SIZE 60
#define SERVER_ADDRESS "192.168.0.103"
#define CLIENT_ADDRESS "192.168.0.103"
#define SERVER_PORT 5038
#define CLIENT_PORT 5100
int main()
{
    int sd;
    int time1;
    struct sockaddr_in serveraddr, clientaddr;
    char msg[MAX_MSG_SIZE];
    bzero((char *) &serveraddr, sizeof(serveraddr));
    serveraddr.sin_family = AF_INET;
    serveraddr.sin_addr.s_addr = inet_addr(SERVER_ADDRESS);
    serveraddr.sin_port = htons(SERVER_PORT);
    bzero((char *) &clientaddr, sizeof(clientaddr));
    clientaddr.sin_family = AF_INET;
    clientaddr.sin_addr.s_addr = INADDR_ANY;
    clientaddr.sin_port = htons(CLIENT_PORT);
    sd = socket(AF_INET, SOCK_STREAM, 0);
    bind(sd,(struct sockaddr *) &clientaddr, sizeof(clientaddr));
    connect(sd,(struct sockaddr *) &serveraddr, sizeof(serveraddr));
    char buf[sizeof(msg)];
    *msg=(char)"Action: Login\r\nUsername: admin\r\nSecret: admin\r\n\r\n";
    send(sd,msg,strlen(msg)+1,0);
    printf(".");
    int byte_read = 0;
    
    int i = 0;
    while (i<100) {
        i++;
       
     
        printf("...\n");
        
        byte_read = recv(sd,buf,sizeof(msg),0);
        if (byte_read>0) {
            printf("Get %d bytes\t Message: %s\n",byte_read,buf);
        }
        sleep(1);
        byte_read = 0;
    }
    
    
    close(sd);
    return(1);
}
