|
|
|
Передача между сокетами с использованием CArchive
|
|||
|---|---|---|---|
|
#18+
у меня есть клиент и сервер на MFC. они работают через сокеты. есть класс B (в нем нет методов, но могут быть вектора stl). Могу ли я передать элемент этого класса через сокет с использованием CArchive. Я просто читал в мсдн что вроде это реально. Прав ли я. Сейчас у все побайтно работает. Считывается заголовок потом идет обработка. А хотелось бы сразу передать объект. Как мне это можно сделать? Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2006, 12:28 |
|
||
|
Передача между сокетами с использованием CArchive
|
|||
|---|---|---|---|
|
#18+
Ни в коем случае не используй CSocket класс MFC и все приблуды к нему типа CSocketFile - проблем не огребешь ... работай через CAsyncSocket ... по существу вопроса не понимаю твоих затруднений ... передаваться в любом случае будет поток байт ... а ты что хотел? ... пиши для своего класса серелизацию через CArchive, используя например CMemoFile, потом делаешь Detach из файла - получишь свои байты и передавай их как обычно ... на сервере также пишешь все принятые байты в CMemoFile делаешь обратную серелизацию через CArchive и получаешь свой объект ... ты это хотел услышать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2006, 13:19 |
|
||
|
Передача между сокетами с использованием CArchive
|
|||
|---|---|---|---|
|
#18+
Да! 1.А еще тогда встречный вопрос если в классе будут методы которые будут выполняться локально (т.е. одинаковый класс и у клиента и сервера, но передаются только данные). Скажется ли это как то 2. Можно небольшой пример как это реализовать Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2006, 13:57 |
|
||
|
Передача между сокетами с использованием CArchive
|
|||
|---|---|---|---|
|
#18+
хех ... 1. не понял ... если твой класс(объект те который ты создал на его основе) работает в определенном окружении ... ммм... внешних данных (внешняя среда?), то разумеется на сервере эта самая среда тебе будет недоступна ... если ты и ее не передашь :)) 2. эээ ... серелизацию опустим ... ну не знаю ... так чтоли Код: plaintext 1. 2. 3. 4. 5. 6. 7. инициализируешь CMemFile перед формированием нового пакета: Код: plaintext 1. 2. 3. Код: plaintext 1. 2. 3. 4. 5. Код: plaintext 1. 2. 3. 4. 5. Код: plaintext 1. 2. 3. 4. 5. 6. 7. ну а на сервере пишешь приходящие байты в CMemFile (кроме тех самых первых четырех, разумеется) затем Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2006, 14:34 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=33780419&tid=2031062]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
156ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 235ms |
| total: | 491ms |

| 0 / 0 |
