recv принимает сообщения без пробела

381
02 февраля 2017, 01:37

Приветствую, проблема с recv. Принимает сообщения слитно в чем ошибка, как исправить? Если заранее определить как здесь, все корректно отправляется Хочется ставить \n после каждого принятия, но тогда он принимает каждое слово которое было введено через пробел, на новую строку

//Send
char buff[512] = "Helloy client\n";
int sen = send(AcceptSocket, buff, strlen(buff), 0);
while(1)
{
    int rec = recv(AcceptSocket, buff, sizeof(buff), 0);
    printf("%s", buff);
    scanf("%s",&buff);
    send(AcceptSocket, buff,sizeof(buff), 0);
};     
Привет друг! //Отсылаем данные
Приветдруг! // Такие данные придут клиенту или же если отправлены наоборот 

Аналогично и с Клиентом

Answer 1

Для начала - хоть это и не к вашему вопросу - передавайте и нулевой символ -

int sen = send(AcceptSocket, buff, strlen(buff) +1, 0);
                                               ^^^

или потом его дописывайте..

А у вас проблема в том, что scanf("%s",&buff); читает одно слово, а не строку целиком. Используйте, например, fgets:

fgets(buff,sizeof(buff),stdin);
Answer 2

Попробуйте после recv(AcceptSocket, buff, sizeof(buff), 0); объявить string ResponseBuffer(buff); и используйте дальше ResponseBuffer со всеми фичами string. У меня при такой практике проблем не возникало.

READ ALSO
Ошибка в Mega SDK для Python

Ошибка в Mega SDK для Python

Ошибка при использовании Mega SDK для Python v3

372
Перебор в числе С++ [требует правки]

Перебор в числе С++ [требует правки]

Есть число 2098216Надо найти количество трехзначных чисел, которые можно создать из цифр этого числа, т

342
#1452 - Cannot add or update a child row: a foreign key constraint fails

#1452 - Cannot add or update a child row: a foreign key constraint fails

ЗдравствуйтеНе могу понять, почему не импортируется таблица в phpmyadmin

486