LINUX.ORG.RU

Сокеты-одновременное отправление и получение информации(C++)


0

0

Вообщем есть программа. В главном потоке он считывает некоторую информацию от пользователя и отправляет её на сервер. Второй поток должен слушать сообщения от сервера. Семафор не поставишь, иначе отправление заблокируется навечно. Как поступить? Не открывать же на клиенте порт, чтобы туда приконнектился сервер

Re: Сокеты-одновременное отправление и получение информации(C++)

предлагаешь прерываться через небольшой отрезок времени, убирать лок и дать отправить сообщение?

Motiv_studenta ★★ ()

Re: Сокеты-одновременное отправление и получение информации(C++)

зачем так сложно? 
сделать select([STDIN_FILENO, server_socket], NULL, NULL, NULL). Как только select выходит -- проверяешь что случилось:
1) пользователь нажал что-нть 
2) сервер прислал 
3) сигнал и т.д. 
Еще лучше для тех же целей заюзать poll

phoenix ★★★★ ()

Re: Сокеты-одновременное отправление и получение информации(C++)

а что input и output теперь уже один поток? вродь проблем не должно быть с одновременной передачей и приемом. или я что-то не понял?

Deleted ()

Re: Сокеты-одновременное отправление и получение информации(C++)

>а что input и output теперь уже один поток? вродь проблем не должно быть с одновременной передачей и приемом. или я что-то не понял?

Хз. Я просто боюсь что какие-нибудь малозаметные ошибки пойдут, если мы с помощью одного сокета будем одновременно отправлять и принимать данные. Перестраховка. Или все-таки так можно делать?

Motiv_studenta ★★ ()

Re: Сокеты-одновременное отправление и получение информации(C++)

>что значит можно? так и делаеют вроде бы :)

В одном потоке принимать, а в другом отправлять?

Motiv_studenta ★★ ()

Re: Сокеты-одновременное отправление и получение информации(C++)

>в твоем случае хватит одного потока на все

и как же. Я хотел так(номера=потоки):

1) Отслеживаем нажатия клавиш, отсылаем информацию об этом на сервер

2) Принимаем инфу с сервера, добавляем в очередь событий

3) Смотрим очередь событий, обрабатываем, рисуем на экране

Motiv_studenta ★★ ()

Re: Сокеты-одновременное отправление и получение информации(C++)

Select даёт возможность прослушивания событий на куче дескрипторов. Мультиплексированием зовётся. Читай в гугле, а лучше всего у Стивенса.

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.