В с++ шарю очень мало. Пытаюсь собрать из примеров простую прогу, которая будет слушать 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);
}