0 / 0 / 0
Регистрация: 22.11.2018
Сообщений: 3
|
|
1 | |
Сервер "зависает"22.11.2018, 18:57. Просмотров 1946. Ответов 10
Метки нет Все метки)
(
Пытаюсь написать клиент-сервер в Kdevelop на линуксе.
Написал значит гору текста сразу, сервер компилится и запускается без ошибок, но окно консоли просто пустое. Начал разбиратся, поудалял вообще все, оставил только все действие на подключение клиента (создал сокет, забиндил, сделал слушающим, другой соккет ждет accept), с клиента отправляю текст, на сервере принимаю с помощью recv(). Понатыкал после каждого действия на сервере cout<<"шаг N выполнен". Так вот в итоге то же самое, просто пустая консоль при запуске сервера. Если после этого запустить клиент и отослать текст, то сервер выводит сразу все (и все эти cout, которые я понатыкал, и переданный текст). То есть сервер ничего не выводит, пока не будет завершена работа программы, а потом выводит все, неважно где это было, хоть в самом начале программы. А выводит он после того, как завершит свою работу клиент. В Visual'e такой проблемы нет, с kdevelop до сокетов тоже ни с какими проблемами не сталкивался, так в чем причина такого поведения и как это исправить?
0
|
|
22.11.2018, 18:57 | |
Сокеты: как узнать ip адрес, с которым "связался" сервер? Перестает "работать" сервер при повторном подключении клиента программа "Сервер - клиент". В чем тут ошибка?
|
|
Модератор
3319 / 2106 / 337
Регистрация: 13.01.2012
Сообщений: 8,179
|
|
23.11.2018, 08:12 | 2 |
lostystyg, без взгляда на ваш код - никак. Телепатирую что там блокирующий сокет пытается читать больше чем в него отправляют и чтение висит до разрыва связи при котором оно отвисает ибо таковы законы мануалов
1
|
0 / 0 / 0
Регистрация: 22.11.2018
Сообщений: 3
|
||||||
23.11.2018, 16:12 [ТС] | 3 | |||||
Я же описал, что код самый простейший.
Ну к примеру клиент:
Добавлено через 49 минут В предыдущем сообщении код сервера, опечатался
0
|
Модератор
3319 / 2106 / 337
Регистрация: 13.01.2012
Сообщений: 8,179
|
|
23.11.2018, 18:26 | 4 |
lostystyg, отправьте сообщение длиной более 100 байт и поглядите что получится
0
|
534 / 215 / 68
Регистрация: 01.03.2011
Сообщений: 587
|
|
24.11.2018, 12:54 | 5 |
![]() Решение
Вангую, что надо добавить <<endl
2
|
Модератор
3319 / 2106 / 337
Регистрация: 13.01.2012
Сообщений: 8,179
|
|
24.11.2018, 15:29 | 6 |
prik, не угадал
0
|
534 / 215 / 68
Регистрация: 01.03.2011
Сообщений: 587
|
|
24.11.2018, 15:53 | 7 |
vxg, А чем, кроме буферизации stdout можно объяснить, что код не выводит "now", "server started" и тд???
1
|
Модератор
3319 / 2106 / 337
Регистрация: 13.01.2012
Сообщений: 8,179
|
|
24.11.2018, 16:51 | 8 |
prik, тем чего мы не видим и что ТС счёл несущественным
0
|
0 / 0 / 0
Регистрация: 22.11.2018
Сообщений: 3
|
|
24.11.2018, 17:18 [ТС] | 9 |
Если отправлять больше 100 байт, то просто доходят только 100 и они же выводятся. А вот добавление endl кстати помогло, теперь все нормально работает, только вот почему? В Visual Studio все работало нормально и без endl. Объясните, пожалуйста, в чем причина. И все же, хоть это и не понадобилось, что я счел несущественным по мнению vxg? Тоже уверен лишним узнать не будет.
0
|
534 / 215 / 68
Регистрация: 01.03.2011
Сообщений: 587
|
|
24.11.2018, 17:29 | 10 |
![]() Решение
Я понимаю, что пример. но так делать нельзя. При печати/работе с buff исходите из того, что клиент может прислать любой мусор, а не Си-строку.
stdout по умолчанию имеет строчную буферизацию.
2
|
Модератор
3319 / 2106 / 337
Регистрация: 13.01.2012
Сообщений: 8,179
|
|
24.11.2018, 21:15 | 11 |
все что угодно) хоть это и не понадобилось - у вас составное приложение, но дан код только сервера
0
|
24.11.2018, 21:15 | |
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь. IRC бот, ответ сервера: "Couldn't resolve your hostname" Нужна литература на тему "Разработка параллельного сервера на линукс"? Что такое "unresolved external symbol _WSACleanup@0"? ERROR PIN.CPP: Unable to open include file "winsock.h" Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |