Модераторы: feodorv
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отправка и принятие данных в 2 и более потоков, send, recv 
:(
    Опции темы
ppoger
Дата 13.10.2007, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Всем привет. Вопрос такой. Есть соединение между 2-мя компами. протокол tcp. сокеты блокирующие. как бы организовать следующее:


//ОТПРАВКА
DWORD SendThread1(LPARAM lParam)
{
SOCKET s = (SOCKET)lParam;
send(s,"123",3);
return 0;
{


DWORD SendThread2(LPARAM lParam)
{
SOCKET s = (SOCKET)lParam;
send(s,"12345",5);
return 0;
{


//ПОЛУЧЕНИЕ

DWORD RecvThread1(LPARAM lParam)
{
SOCKET s = (SOCKET)lParam;
send(s,buf,3);
return 0;
{


DWORD RevcThread2(LPARAM lParam)
{
SOCKET s = (SOCKET)lParam;
send(s,buf,5);
return 0;
{

Код просто образец того что нужно. Вот как узнать с какого потока пришли данные? к примеру хочу одновременно отправлять и файл, и данные. Надеюсь объяснил понятно
PM MAIL   Вверх
GrayCardinal
Дата 14.10.2007, 05:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


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

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



Конкретнее, пожалуйста...


--------------------
PM MAIL WWW   Вверх
ppoger
Дата 14.10.2007, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



да куда конкретнее........  например один поток отправляет на сокет по 50 байт, второй по 70. как на сервере их правильно принять? не одной же функцией recv, т.к она соберет всю инфу что передали 2 потока. Хотя я начинаю уже думать что это нереально. в том же квипе к примеру для передачи файла создается свой сокет на порт отдельный от передачи сообщений, и одновременно 2 файла отправляться не могут.... Ну в общем мож кто сталкивался?
PM MAIL   Вверх
jonie
Дата 14.10.2007, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



интересно, а как ты их станешь отличать друг от друга эти пакеты по 50 и 70 байт на стадии "разброса по потокам"?
Используй неблокирующие сокеты, или много сокетов.



--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
ppoger
Дата 14.10.2007, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



вот в том то и вопрос, как отличить какой пакет пришел... значит копать в сторону неблокирующих? те ето сокет который переводится функцией select? я просто не отличию синхронных-асинхронных от блокирующих-неблокирующих. Это одно и тоже?
PM MAIL   Вверх
Comm
Дата 16.10.2007, 09:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



http://forum.vingrad.ru/forum/topic-176373.html

там в предпоследнем сообщении есть ссылка на пример...


--------------------
=)))))
user posted image
PM MAIL ICQ   Вверх
ptr
Дата 16.10.2007, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 661
Регистрация: 31.5.2006
Где: Новосибирск

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



ppoger, где траву берешь? smile  smile Такое оригинальное решение коммуникации я вижу в первый раз. Лучше так никогда не делать, потому что багов будет smile .

Цитата(ppoger @  15.10.2007,  00:21 Найти цитируемый пост)
те ето сокет который переводится функцией select?

Куда переводится?!? Обычно select используют для мультиплексирования.

Цитата(ppoger @  15.10.2007,  00:21 Найти цитируемый пост)
 я просто не отличию синхронных-асинхронных от блокирующих-неблокирующих. Это одно и тоже?

Они похожи, но не равны. Главное отличие асинхронных сокетов от неблокирующих состоит в уровне обработки событий. С неблокирующими сокетами ты должен следить за всем сам, в ассинхронных же за тебя это делает система.

Цитата(ppoger @  14.10.2007,  02:58 Найти цитируемый пост)
 к примеру хочу одновременно отправлять и файл, и данные. Надеюсь объяснил понятно

У тебя свой протокол?

Это сообщение отредактировал(а) ptr - 16.10.2007, 12:23


--------------------
Единственный способ определить границы возможного - это выйти за эти границы, в невозможное.
Артур Кларк.
PM MAIL ICQ   Вверх
ppoger
Дата 16.10.2007, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



prt - большое спасибо за пдф. Буду изучать.
PM MAIL   Вверх
ptr
Дата 17.10.2007, 08:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 661
Регистрация: 31.5.2006
Где: Новосибирск

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



Цитата(ppoger @  16.10.2007,  20:32 Найти цитируемый пост)
prt - большое спасибо за пдф. Буду изучать.

Да я вообщем-то эту pdf привел просто для примера select'a. В твоём же случае есть несколько возможных вариантов.
1. Можно сделать некоторый протокол, который будет позволять передавать несколько файлов параллельно по одному соединению. Вот только несколько потоков на передачу/прием данных на один сокет лучше не вешать.
2. Можно делать всё последовательно на одном сокете.
3. Можно использовать ещё один сокет.

А вот как будет происходить обмен здесь не принципиально.


--------------------
Единственный способ определить границы возможного - это выйти за эти границы, в невозможное.
Артур Кларк.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




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


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

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