Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Самый простой многопоточный сервер на именованных каналах, пара вопросов
|
|||
|---|---|---|---|
|
#18+
Здравсвуйте, я написал простой сервер, который для каждого клиента запускает отдельный поток: Клиент посылает сообщения, сервер на них отвечает. Клиенты и сервер общаются через экземпляры именованых каналов. Вот основной код на сервере: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. Вот основной код на клиенте: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. Проблема в том, что обмен сервер зависает в конце. Сообщения посылаются, но сервер подвисает. И ещё. Мне нужно, чтоб клиент посылал запросы серверу периодически, а не один раз как у меня. Как это можно исправить? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2014, 16:12 |
|
||
|
Самый простой многопоточный сервер на именованных каналах, пара вопросов
|
|||
|---|---|---|---|
|
#18+
Где-то в коде делается CloseHandle а потом в этот же закрытый хендл делается WriteFile. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2014, 16:24 |
|
||
|
Самый простой многопоточный сервер на именованных каналах, пара вопросов
|
|||
|---|---|---|---|
|
#18+
[quot mr_virtus] Извиняюсь, что не по делу, просто интересно на каком курсе учитесь? А, если по делу, то что у Вас thread функция не зациклена? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2014, 16:32 |
|
||
|
Самый простой многопоточный сервер на именованных каналах, пара вопросов
|
|||
|---|---|---|---|
|
#18+
mayton, авторГде-то в коде делается CloseHandle а потом в этот же закрытый хендл делается WriteFile. Код: plaintext 1. 2. 3. 4. 5. Вот здесь я комментил, но результат не дало. А в другие CloseHandle я не попадаю. Или я что-тоне понимаю?=) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2014, 16:35 |
|
||
|
Самый простой многопоточный сервер на именованных каналах, пара вопросов
|
|||
|---|---|---|---|
|
#18+
smald, авторИзвиняюсь, что не по делу, просто интересно на каком курсе учитесь? Предпоследний. С какой целью интересуетесь? авторА, если по делу, то что у Вас thread функция не зациклена? Ну да, я тоже об этом подумал. Что по идее, если нужно несколько раз слать сообщения, то нужно писать цикл. Как в нем только задать условие выхода? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2014, 16:36 |
|
||
|
Самый простой многопоточный сервер на именованных каналах, пара вопросов
|
|||
|---|---|---|---|
|
#18+
mr_virtus Ну да, я тоже об этом подумал. Что по идее, если нужно несколько раз слать сообщения, то нужно писать цикл. Как в нем только задать условие выхода? Цикл должен быть в thread функции, а то у Вас сервак в отдельном потоке слушает, читает, делает write, и умирает. И цикл в клиенте. Выход хоть через регистрацию обработчика POSIX сигнала, хоть отслеживание действий пользователя в GUI. Да море возможностей, какой-нибудь QtButton повесьте, и назначьте слотом на сигнал о клике уничтожение процесса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2014, 17:09 |
|
||
|
Самый простой многопоточный сервер на именованных каналах, пара вопросов
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. Ну да. В клиенте точно. Думаю, чтоб периодически отправлять запросы с клиента использовать таймер. Еще с одной ошибкой разобрался, почему висел сервак: авторWaitForMultipleObjects(iNp, hT, TRUE, INFINITE); авторВыход хоть через регистрацию обработчика POSIX сигнала, хоть отслеживание действий пользователя в GUI. Не очень понял момент - " через регистрацию обработчика POSIX".? А отслеживать действия пользователя - это, например, при нажатии кнопки - убивается процесс? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2014, 23:11 |
|
||
|
Самый простой многопоточный сервер на именованных каналах, пара вопросов
|
|||
|---|---|---|---|
|
#18+
mr_virtusВот здесь я комментил, но результат не дало. А в другие CloseHandle я не попадаю. Или я что-тоне понимаю?=) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2014, 23:36 |
|
||
|
Самый простой многопоточный сервер на именованных каналах, пара вопросов
|
|||
|---|---|---|---|
|
#18+
mayton, Вот здесь я комментил, но результат не дало. А в другие CloseHandle я не попадаю. Или я что-тоне понимаю?=) авторDWORD WINAPI MainWindow::ThreadFunction(LPVOID threadArg){ ThreadArg* p = static_cast<ThreadArg*>(threadArg); DWORD Read; DWORD Written; char Buf[256]; char BufWr[256]; if (ReadFile(p->hNamedPipe, Buf, 256, &Read, 0) <= 0){ MessageBox(0, L"ReadFile failed with error", L"Info", MB_OK); CloseHandle(p->hNamedPipe); } QString qstr = QString::fromUtf8(Buf); emit p->needWriteRequest(qstr); QString ans = "answer"; strcpy(BufWr, ans.toLocal8Bit().data()); WriteFile(p->hNamedPipe, BufWr, sizeof(BufWr), &Written, 0); delete p; return 0; } Я думаю дело не в этом. В этот CloseHandle мы попадаем, только если не смогли прочитать байты. Там проблема была в функции WaitForMultipleObjects(iNp, hT, TRUE, INFINITE); Я поставил max_clients = 20; а сам не запускал столько клиентов, вот сервер и вис. Теперь осталось дописать код, чтоб клиент переодически отправлял сообщения, а сервер их считывал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2014, 09:11 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38605075&tid=2019567]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
167ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 287ms |
| total: | 535ms |

| 0 / 0 |
