![]() |
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]() ![]() ![]() |
|
DFA |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 14.3.2008 Репутация: нет Всего: нет |
Извиняюсь, если не в нужный раздел фрума. Пишу на VC6 MFC.
Написана программа обмена небольими текстовыми сообщениями. Структура такая: есть сервер, который разруливает потоки сообщений от клиентов, установленных на компы сотрудников офиса, работающих на XP. Построено на сокетах. Я удаленно подключаюсь к другому серверу в офисе, где крутится 1С, по VPN. На нем Win2003 SP2 и клиент для связи по офису. И тут возникает проблема - получаемые мной сюда сообщения приходят, как я понимаю, не в мою сессию и я, естесственно, их не вижу. Как мне направить входящие к себе? |
|||
|
||||
feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 9 Всего: 45 |
Честно говоря, не понятно. О каких сессиях идёт речь?
Сервер Вами написан? А клиент? Правильно ли я понял, что Вы удалённо подключаетесь к компу, на котором установлен клиент для связи по офису, работающий на сокетах; и получаемые сообщения от сервера, который разруливает потоки сообщений от клиентов, Вам не передаются, потому что Вы удалённо подсоединены? -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
DFA |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 14.3.2008 Репутация: нет Всего: нет |
Поясню на примере :
У сервера сообщений таблица соответствия: Вася ...0.1 Петя ...0.2 Вася подключился удаленно к серверу, который ...0.1, залогинился там, стал ID1, потому что ID0 это основной сеанс. Петя работает за своим компом (...0.2) и видит, что Вася в системе (у него есть список пользователей кому он может отправить сообщение и у имени Вася теперь стоит '+'). Петя отправляет сообщение Васе, сервер пересылает его на ...0.1, но Вася его не получает, хотя сообщение приходит на адрес ...0.1, НО к iD0. Вопрос: есть ли возможность переслать полученное клиентом в ID0 сообщение к ID1? Сервер и клиент написаны мной, возникла одна мысль – поиграть с портами для разных ID, в связи м этим еще один вопрос: Использую. VC6. пытаюсь воспользоваться функцией ProcessIdToSessionId #pragma comment(lib, "kernel32.lib") DWORD pSessionId; DWORD curPID; curPID=GetCurrentProcessId(); BOOL ret=ProcessIdToSessionId(curPID,pSessionId); Не получается. Что не так? |
|||
|
||||
Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 16 Всего: 39 |
так исправь свой код и посылай на правильный ID -------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
DFA |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 14.3.2008 Репутация: нет Всего: нет |
Используя сокеты, я задаю адрес, но не ID. Адрес-то правильный, ID другой!
У меня функцию ProcessIdToSessionId не находит, говорит нет такой, хотя в stdafx.h добавил #define _WIN32_WINNT 0x0500
Что я не так делаю? Это сообщение отредактировал(а) DFA - 15.12.2013, 15:11 |
|||
|
||||
Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 16 Всего: 39 |
Уже избавься от VS6 которая была разработана 20 лет назад. Это сообщение отредактировал(а) Dem_max - 15.12.2013, 17:21 -------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
-------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
Лично у меня возник пока только один вопрос - как это все друг с другом связанно? Какое отношение имеют сетевые сокеты к Терминальным Сессиям и кто с кем (или что с чем) должно связываться? |
|||
|
||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
Если только все сотрудники офиса не сидят удаленно на одной физической машине, связываясь по loopback с сервером и обмениваются между собой сообщениями через что-то вроде WTSSendMessage только для таких целей здесь есть одно лишнее звено: ![]() Добавлено через 2 минуты и 19 секунд хотя, это звено и не мешает работе основной цепочке )) Это сообщение отредактировал(а) GremlinProg - 16.12.2013, 15:08 -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
DFA |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 14.3.2008 Репутация: нет Всего: нет |
Заработало!
Чтобы как-то разделить клиентов на сервере, использую разные порты - клиент загружается, определяет ID (ProcessIdToSessionId) и подключается к своему порту. Всем спасибо за участие! |
|||
|
||||
![]() ![]() ![]() |
Правила форума "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. |