![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 22.12.2011
Сообщений: 6
|
![]()
Подскажите новичку. Есть TCP сервер к которому присоединяются пользователи, каждый из которых работает со своим потоком. У каждого клиента есть поток ожидания связи. Один из пользователей хочет связаться с другим, он отсылает запрос на сервер, а сервер должен отослать пользователю. Проблема в том что я не могу 2рому пользователю отправить запрос на связь. Правильно ли я понимаю? В потоке который ждет звонка (у клиента) должен быть создан что то типо сервера для ожидания приема сообщения, а не просто recv который ждет сообщения?
|
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
![]()
Вы хотите связать клиентов напрямую друг с другом, или через сервер?
Судя по названию темы, через сервер. Тогда какие проблемы? После установки связи клиента с сервером, любой из них может в любой момент послать данные на удалённую сторону, и там эти данные можно спокойно получить. Отдельное новое соединение для этого не нужно.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
Последний раз редактировалось veniside; 25.12.2011 в 02:44. |
![]() |
![]() |
![]() |
#3 |
Регистрация: 22.12.2011
Сообщений: 6
|
![]()
Я хочу связаться через сервер с 2мя клиентами но заранее я не знаю с каким. Получается так, клиент, клиент-2, ... и тд, соединяется с сервером, для каждого из них выделен отдельный поток для обработки возможного сценария. Теперь допустим клиент-1 хочет связаться с клиент-2. Клиент-1 отправляет запрос на сервер что хочет связаться с клиент-2, сервер получив это должен отправить сообщение клиент-2 о том что с ним хочет связаться клиент-1. Вот тут получается проблема, у сервера не получается связаться с клиент-2 с потока в клиента-1. Так как клиенты в разных потоках я не могу получить их сокеты, а когда пытаюсь создать новый оно почему то не принимает на второй стороне, вот не пойму как решить эту проблему.
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
![]()
> так как клиенты в разных потоках я не могу получить их сокеты
чё-то вы перемудрили. Сокет — это просто хендл, т.е. 4 байта, какие проблемы передать 4 байта из одного потока в другой? Собственно, и передавать ничего не нужно, т.к. должен быть некий менеджер, который связывает сокет и ID клиента. В любой момент этот менеджер можно пнуть из любого потока, с просьбой послать такие-то данные такому-то клиенту. Как-то так.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
![]() |
![]() |
![]() |
#5 |
Регистрация: 22.12.2011
Сообщений: 6
|
![]()
Так сокеты создаются локальные, у каждом потоке свой. Как получить сокет другого потока?
Код:
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
связь пользователей между собой на сайте | строгийЁЖ | PHP | 5 | 05.08.2011 11:22 |
связь через глобальные переменные | Anna T | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 18.12.2010 20:29 |
Получить список пользователей работающих через удаленный рабочий стол | AlexandrSid | Общие вопросы Delphi | 2 | 01.06.2009 18:55 |
Связь с кучей dbf файлов (таблиц) через OLEDB через UNION ALL | Sasha811 | SQL, базы данных | 0 | 01.01.2009 14:04 |
Связь через интернет | Артэс | Общие вопросы C/C++ | 4 | 04.07.2008 21:54 |