|
Модераторы: feodorv |
|
Toyamatokanava |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 63 Регистрация: 29.10.2012 Где: Ростов-на-Дону Репутация: нет Всего: нет |
Как сделать так, чтобы клиент принимал от двух серверов сообщения в разных потоках? Собственно я сделал следующее, инициализировал настройки под два сокета с разными портами и одним локальным ip, так как тестирую на одной машине, потом в while(1) создаю нить и принимаю от одного сокета. Я просто не могу понять как сделать так, чтобы программа понимала с какого порта прием(или сокета). Может я не разобрался в теме конечно, направте пожалуйста.)
|
|||
|
||||
feodorv |
|
||||||||||
Эксперт Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 10 Всего: 45 |
Можно сделать и так, чтобы клиент принимал от двух серверов в одном потоке))) Сначала об ошибках. Вот здесь Вы справедливо вынесли создание массива за пределы цикла:А вот здесь почему-то нет:Вообще, довольно странное увлечение конструкциями типа
Вот здесь забыто else: Почему strlen(buff), да ещё плюс один (он-то откуда взялся), когда нужен sizeof(buff):
Теперь о деле. Зачем отравлять в каждый поток одинаковый аргумент my_sock? Отправляйте соответствующий сокет:
PS Зря я тему перенёс, она скорее касается WinAPI, чем работы с сокетом... -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
||||||||||
|
|||||||||||
Toyamatokanava |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 63 Регистрация: 29.10.2012 Где: Ростов-на-Дону Репутация: нет Всего: нет |
Спасибоо, разобрался вроде. Получилось через создание событий в createevent и ожидания их через waitformultipleobjects. |
|||
|
||||
feodorv |
|
||||
Эксперт Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 10 Всего: 45 |
Ну, я имел в виду, что хендл потока (возвращаемый вызовом CreateThread) является синхронизирующим объектом, то есть его самого можно использовать в WaitForMultipleObjects():
Хендл потока сигнализируется (переходит в свободное состояние), когда поток реально завершает своё исполнение. Это самый честный подход, так как при использовании событий поток ещё может не завершиться, хотя событие уже сигнализирует о его завершении. -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
||||
|
|||||
Sajtran |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 15.10.2008 Где: Мегион Репутация: нет Всего: 2 |
в теории всё просто, один коннект - один поток
в реале фигня получается - всё это быстро ложится при достаточно примивных атаках Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Сети | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |