![]() |
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]() ![]() ![]() |
|
Alexey_2007 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 119 Регистрация: 30.12.2006 Репутация: нет Всего: 1 |
Может ли мне кто-нибудь подкинуть пример работы с WinSock2. Смотрел в разделе исходники, но не нашел.
Мне нужно именно клиент-серверное приложение, такое чтобы сервер мог получать информацию от несольких клиентов(что очевидно... но у меня что то не получается именно так) TCP\IP. Если вместе с этим будут каким-либо образом прикручены диалоги - это будет вообще здорово!!! --------------------
Святая простота |
|||
|
||||
witex |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 224 Регистрация: 16.10.2006 Где: Эстония Репутация: 1 Всего: 4 |
Здесь! и исходники и маленькое пособие! Только вот ты разделом ошибся! Всё таки сетевое программирование!
--------------------
Я не волшебник, я только учусь."Шлёпни в Гугл" - Афтор Былов Ю.М. |
|||
|
||||
Alexey_2007 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 119 Регистрация: 30.12.2006 Репутация: нет Всего: 1 |
thanks!!
--------------------
Святая простота |
|||
|
||||
kleks |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 6.10.2005 Репутация: нет Всего: нет |
У меня возник вопрос....по поводу модели "клиент-сервер"....предположим у меня есть сервер и два клиента подключившиеся к этому серверу, как мне организовать банальный чат между этими клиентами??? на примере клиента и сервера описанные по предыдущей ссылке. Т.е. как мне организовать связь между двумя потоками??
|
|||
|
||||
-Kp0T- |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 23.2.2007 Репутация: 2 Всего: 2 |
Vivat Крис Касперский, но я тебе не отвечу на вопрос.
Когда знакомился с winsock библиотекой тоже обдумывал реализацию своей задачи в мультипоточности с блокирующими сокетами, но это не лучшее решение, ибо возрастает сложность программирования. Более гибкое решение все таки с сокетами, работающими в асинхронном режиме. Привожу пример эхо-сервера c обоработкой CTRL+BREAK, CTRL+C, VK_RETURN. Ну про клиент думаю догадаешься :) ( telnet 127.0.0.1 7777 ). [ упор на WSAAsyncSelect(), но его использование ведет к увиличению количества потоков на 1 ]
|
|||
|
||||
kleks |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 6.10.2005 Репутация: нет Всего: нет |
...конечно спасибо огромное, но я всё-таки так и не понял. Меня по сути интересует следующие:
Два клиента подключенны к одному серверу, как сделать так чтобы эти два клиента могли обмениваться между собой информацией!!!??? Вот вариант моего сервера...
|
|||
|
||||
-Kp0T- |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 23.2.2007 Репутация: 2 Всего: 2 |
Вообще не зря я тебе привел тут про асинхронные сокеты и WSAAsyncSelect(). Функция действительно мощная. Да ладно.
Как бы я поступил с твоим кодом. - В пространстве глобальных переменных определил бы стек (как класс). - Плохо то что поток замерз по функции recv и ждет данные или ошибку :) - Тем не менее можно данные о подключений клиентов (в частности нам надо SOCKET) вынести опять таки в globalnamespace или инкапсулировать в класс (как душе угодно) - Пусть "потоки висят" в ожидании данных, их уже не спасешь. Чтоб срочно отослать данные (которые упали в стек) нужен другой поток (только чтобы отправить второму клиенту). А теперь собственно программный код, тока на русском языке :) Поток[i] принял данные по recv, положил в стек данные (что и от кого пришло), отправил сообщение оконной процедуре, [ например, WM_USER+1. Как мы помним, ОСь не использует сообщения выше WM_USER - они зарезервированы для потребителя :) ] и снова поток замерз в ожидании отклика функции recv. Тем временем, как пришло сообщение WM_USER+1, оконная процедура извлекла данные из стека, решила что и кому слать по полученным данным и создает новый поток (или потоки - сам реши всем слать в одном потоке или в отдельном. - Случай более 2-х клиентов) который займется отправкой данных. После отправки поток должен завершиться с кодом доставки (ошибки). Я бы тебе код набросал, да сроки поджимать начинают по своему проекту... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Системное программирование и WinAPI" | |
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |