Проблема с использованием recvd: после вызова она возвращает очень большие отрицательные числа!! Решил использовать вместо нее read - таже ситуация. Не могу понять в чем дело! Помогите!
Вот кусок кода, где я ее вызываю:
#define SIZE_BUFFER 10
// Function for receive/transfer data between server and client
void client_process(int index_client, int result)
{
char *buffer = new char[SIZE_BUFFER];
char *buffer2 = new char[15];
bool flag = true;
while(flag)
{
int n = 0;
int recvd = 0;
while(n<SIZE_BUFFER)
{
//recvd = recv(result, buffer+n,SIZE_BUFFER-n, 0 );
recvd = read(result, buffer + n, SIZE_BUFFER-n);
printf("\nrecvd=%i", &recvd);
if(recvd < 0)
{
printf("\nError receiving\n");
flag = false;
break;
}
else if(recvd == 0)
{
printf("\nError connection");
flag = false;
break;
}
else
{
n+=recvd;
printf("\nBUFFER:%s", buffer);
printf("\nn=%d", &n);
}
}
}
Вот результат попытки через телнет отправить несколько символов:
Connection closed by foreign host.
igor# telnet 192.168.1.5 110
Trying 192.168.1.5...
Connected to igor.bashstat.
Escape character is '^]'.
1234567890qwerty
А на сервере:
# ./anti
recvd=-1077937720
BUFFER:1234567890
n=-1077937716
recvd=-1077937720
BUFFER:qwerty
90