Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Кто нибудь знает , что с ним ? )  (Прочитано 921 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Erik.Martirosyan

  • Автор темы
  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Кто нибудь знает , что с ним ? )
« : 18 Ноября 2010, 23:00:14 »
Простая программка , реализующая подключение к серверу и считывающая оттуда 1 строчку (после предварительного запроса естессна  :) ) ... но ... что-то ... не хочет .... read = - 1 и все тут ... сказал как отрезал )

(Нажмите, чтобы показать/скрыть)

Пользователь решил продолжить мысль 18 Ноября 2010, 21:05:54:
разобрался ! затупил с атриббутом у открытии fds ... оказывается rw здесь нельзя ставить ... надо или r+ или w+

// Пожалуйста, ознакомьтесь с правилами форума, в особенности, с п. 2.4. Постарайтесь в дальнейшем воздержаться от создания тем с неинформативным названием.
.renaissance
« Последнее редактирование: 19 Ноября 2010, 22:05:53 от .renaissance »

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Re: Кто нибудь знает , что с ним ? )
« Ответ #1 : 19 Ноября 2010, 08:12:18 »
1)Такой извратный метод вставить в строчку перевод строки никогда до добра не доводил. Открой для себя escape-последовательности.
Ну и по стандарту там должно быть "\r\n"

2) char uri[] = "/index.html"; почувствуй разницу!

3) while((read = getline(&line, &line_len, fds)) != -1) {
    fprintf(stdout,"%s\n", line);
}
free(line); // это тоже надо писать компилятор не обладает телепатией

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: Кто нибудь знает , что с ним ? )
« Ответ #2 : 19 Ноября 2010, 10:37:08 »
1)Такой извратный метод вставить в строчку перевод строки никогда до добра не доводил. Открой для себя escape-последовательности.
Это всё происки форума: https://forum.ubuntu.ru/index.php?topic=79428.0

Ну и по стандарту там должно быть "\r\n"
:o можно пруф с отсылкой на стандарт?

free(line); // это тоже надо писать компилятор не обладает телепатией
Если быть точнее, то
           if (line)
               free(line);

Оффлайн scsiman

  • Активист
  • *
  • Сообщений: 344
    • Просмотр профиля
Re: Кто нибудь знает , что с ним ? )
« Ответ #3 : 19 Ноября 2010, 14:12:44 »
На тему "\r\n" вспоминается, что на неких устройствах перевод строки и возврат каретки означали разные действия. Посему после просто перевода строки мы продолжали печатать не с начала новой строки, а под предыдущим символом. С тех пор "канонически" рекомендуется писать так.
Dell Studio XPS 16, Ubuntu 16.04 LTS (Home).
HP nx6110, Ubuntu 8.04 LTS => 10.04 LTS (Home).

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Re: Кто нибудь знает , что с ним ? )
« Ответ #4 : 19 Ноября 2010, 15:03:19 »
...
Ну и по стандарту там должно быть "\r\n"
:o можно пруф с отсылкой на стандарт?
...
http://tools.ietf.org/html/rfc1945 пункт 4.1 целиком.
А конкретнее ответ находится на 21 странице. Если будешь переходить не по ссылке то в другом оформлении RFC могут не совпасть странички.
Сам CRLF описан слегка выше.

...
free(line); // это тоже надо писать компилятор не обладает телепатией
Если быть точнее, то
          if (line)
               free(line);
не совсем, во free() уже встроена проверка на NULL, и, если мне не изменяет память, это так же описано где-то в стандарте, но искать мне это будет очень лень, поэтому я и написал эту длинную оговорку ;)

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: Кто нибудь знает , что с ним ? )
« Ответ #5 : 19 Ноября 2010, 22:05:25 »
Сам CRLF описан слегка выше.
Тьфублин, извиняюсь... Не разглядел в коде http запрос и подумал, что есть какой-то стандарт гласит во ВСЕХ строках юзать CRLF...


не совсем, во free() уже встроена проверка на NULL, и, если мне не изменяет память, это так же описано где-то в стандарте, но искать мне это будет очень лень, поэтому я и написал эту длинную оговорку ;)
Да точно есть, man 3 free так и гласит: "If ptr is NULL, no operation is performed."

 

Страница сгенерирована за 0.019 секунд. Запросов: 22.