Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отследить нужную сессию. 
:(
    Опции темы
DFA
Дата 10.12.2013, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 14.3.2008

Репутация: нет
Всего: нет



Извиняюсь, если не в нужный раздел фрума. Пишу на VC6 MFC.
Написана программа обмена небольими текстовыми сообщениями.
Структура такая: есть сервер, который разруливает потоки сообщений от клиентов, установленных на компы сотрудников офиса, работающих на XP. Построено на сокетах.
Я удаленно подключаюсь к другому серверу в офисе, где крутится 1С, по VPN.
На нем Win2003 SP2 и клиент для связи по офису. И тут возникает проблема - получаемые мной сюда сообщения приходят, как я понимаю, не в мою сессию и я, естесственно, их не вижу. Как мне направить входящие к себе?
PM MAIL   Вверх
feodorv
Дата 12.12.2013, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 9
Всего: 45



Честно говоря, не понятно. О каких сессиях идёт речь? 
Сервер Вами написан? А клиент? 
Правильно ли я понял, что Вы удалённо подключаетесь к компу, на котором установлен клиент для связи по офису, работающий на сокетах; и получаемые сообщения от сервера, который разруливает потоки сообщений от клиентов, Вам не передаются, потому что Вы удалённо подсоединены?


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
DFA
Дата 14.12.2013, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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);
    
Не получается. Что не так?

PM MAIL   Вверх
Dem_max
Дата 15.12.2013, 08:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

Репутация: 16
Всего: 39



Цитата

Петя отправляет сообщение Васе, сервер пересылает его на ...0.1, но Вася его не получает, хотя сообщение приходит на адрес ...0.1, НО к iD0.


так исправь свой код и посылай на правильный ID


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
DFA
Дата 15.12.2013, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 14.3.2008

Репутация: нет
Всего: нет



Используя сокеты, я задаю адрес, но не ID. Адрес-то правильный, ID другой! 
У меня функцию ProcessIdToSessionId не находит, говорит нет такой, хотя в stdafx.h добавил #define _WIN32_WINNT 0x0500

    
Код

               #include "WinBase.h"
    #pragma comment(lib, "kernel32.lib")

    DWORD pSessionId;
    DWORD curPID;
    curPID=GetCurrentProcessId();

    BOOL ret=ProcessIdToSessionId(curPID,pSessionId);
    
Что я не так делаю?

Это сообщение отредактировал(а) DFA - 15.12.2013, 15:11
PM MAIL   Вверх
Dem_max
Дата 15.12.2013, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

Репутация: 16
Всего: 39



Цитата

Что я не так делаю?


Уже избавься от VS6 которая была разработана 20 лет назад.

Это сообщение отредактировал(а) Dem_max - 15.12.2013, 17:21


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
GremlinProg
Дата 16.12.2013, 06:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



Цитата(DFA @  15.12.2013,  14:01 Найти цитируемый пост)
У меня функцию ProcessIdToSessionId не находит, говорит нет такой

Код

WINBASEAPI
BOOL
WINAPI
ProcessIdToSessionId(
    __in  DWORD dwProcessId,
    __out DWORD *pSessionId
    );




--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
xvr
Дата 16.12.2013, 14:37 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата(DFA @  10.12.2013,  21:45 Найти цитируемый пост)
есть сервер, который разруливает потоки сообщений от клиентов, 


Цитата(DFA @  10.12.2013,  21:45 Найти цитируемый пост)
Построено на сокетах.


Цитата(DFA @  10.12.2013,  21:45 Найти цитируемый пост)
И тут возникает проблема - получаемые мной сюда сообщения приходят, как я понимаю, не в мою сессию


Цитата(DFA @  14.12.2013,  21:38 Найти цитируемый пост)
пытаюсь воспользоваться функцией ProcessIdToSessionId


Лично у меня возник пока только один вопрос - как это все друг с другом связанно? Какое отношение имеют сетевые сокеты к Терминальным Сессиям и кто с кем (или что с чем) должно связываться?

PM MAIL   Вверх
GremlinProg
Дата 16.12.2013, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



Цитата(xvr @  16.12.2013,  16:37 Найти цитируемый пост)
Лично у меня возник пока только один вопрос - как это все друг с другом связанно? Какое отношение имеют сетевые сокеты к Терминальным Сессиям и кто с кем (или что с чем) должно связываться?

Если только все сотрудники офиса не сидят удаленно на одной физической машине, связываясь по loopback с сервером и обмениваются между собой сообщениями через что-то вроде WTSSendMessage

только для таких целей здесь есть одно лишнее звено: 
Цитата(DFA @  10.12.2013,  23:45 Найти цитируемый пост)
Построено на сокетах


 smile

Добавлено через 2 минуты и 19 секунд
хотя, это звено и не мешает работе основной цепочке ))

Это сообщение отредактировал(а) GremlinProg - 16.12.2013, 15:08


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
DFA
Дата 17.12.2013, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 14.3.2008

Репутация: нет
Всего: нет



Заработало!
Чтобы как-то разделить клиентов на сервере, использую разные порты - клиент загружается, определяет ID (ProcessIdToSessionId) и подключается к своему порту.

Всем спасибо за участие!

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.1283 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.