|
|
|
Работа с сокетами14.04.2011, 21:02. Показов 7749. Ответов 34
Метки нет (Все метки)
Доброго времени суток.
Изучаю сокеты (linux, bsd, cygwin), в качестве испытательного полигона - создаю программу-чат (наверное, это самый заезженный пример работы с сокетами ). И понимаю, что самостоятельно с этим разобраться будет тяжко. Прошу помощи.Первое, самое непонятное: можно ли через один и тот же сокет и читать, и писать, чтобы не выносить чтение в ещё одно соединение (и, соответственно, поток)? И второе (что теоретически можно отбросить при утвердительном ответе на первое): целесообразно ли выносить каждое новое соединение в новый поток? И нужно ли слушать в соседнем потоке? Или вообще всё это можно сделать в одном?
0
|
|
| 14.04.2011, 21:02 | |
|
Ответы с готовыми решениями:
34
Работа с сокетами на Си Код C, работа с сокетами (forward data) Работа с сокетами |
|
|
|||
| 14.04.2011, 22:06 | |||
|
2
|
|||
|
|
|
| 14.04.2011, 23:04 [ТС] | |
|
По ходу разбора возник вопрос.
Я создал fd_set read_fd, обнулил его при помощи FD_ZERO, заполнил дескрипторами открытых сокетов при помощи FD_SET, попутно найдя максимальное значение дескриптора (maxVal), затем вызвал select( maxVal+1, &read_fd, 0, 0, &max_timewait ). Если select вернул не -1, то где-то готовы данные для чтения. Как мне узнать, в какой сокет пришла информация? И правильно ли я понял, что первый параметр select - максимальное значение дескриптора из списка дескрипторов?
0
|
|
|
|
|
| 14.04.2011, 23:11 | |
|
FD_ISSET
http://linux.die.net/man/2/select - см. раздел с примером
1
|
|
|
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
|
|
| 14.04.2011, 23:20 | |
|
да, ну или держать еще один fd_set в который вносятся измения (новые и отвалившиеся сокеты и тд) и memcpy() перед select() Получается чуть эффективней, но все равно с каждой сотней сокетов select тормозит больше и больше.
2
|
|
|
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
|
||||||
| 14.04.2011, 23:25 | ||||||
|
какой нафиг список... это массив
2
|
||||||
|
1 / 1 / 2
Регистрация: 21.07.2009
Сообщений: 19
|
||||||||||||
| 18.09.2012, 16:05 | ||||||||||||
Одного сокета у тебя в любом случае не получится - так как accept сам возвращает дескриптор сокета....а ss можно закрывать уже после того как передали в потоковую функцию.
0
|
||||||||||||
|
3 / 3 / 2
Регистрация: 03.10.2012
Сообщений: 28
|
|||
| 03.10.2012, 10:38 | |||
|
Тоесть есть у одного клиента 3 соединени - значит есть 4 сокета. Один неблокирующий, три других для отправки. Так не будет путаницы. Если охота сделать потоки то реккомендую ДВА потока, первый читает из сокетов и пишет в буфер, второй - читает буфер и обрабатывает сообщение согласно логике программы. Это может помочь избежать переполнения сокетного буффера и потери данных.
0
|
|||
| 03.10.2012, 10:38 | |
|
Работа с сокетами Работа с СОКЕТАМИ! Работа с сокетами Работа с сокетами Работа с сокетами! Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов.
Логика кажется понятной:
1. Находим ключевые слова.
2. Добавляем их на. . .
|
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302
Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
|
SUNO Ai - Река Без Дна
zorxor 31.07.2026
Автор стихотворения - астрофизик Марина Катыс
Ссылка на сгенерированную музыкальную композицию:
https:/ / suno. com/ song/ 6f6e5464-b290-4650-be6c-44c85f8d8013
Я говорю, что Время- как вода
течет. . .
|
Из невошедшего на форум (диалог с ИИ-гугла)
zorxor 29.07.2026
А вот, что интересно, сказал мне ИИ-гугла:
Этот текст — эмоциональный пост пользователя под ником zorxor на интернет-форуме (вероятно, посвященном мистике, непознанному или альтернативной науке). . . .
|
|
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет
Салют, шампанское, овации!
:drink:
|
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр.
Дословно, отклонённая. . .
|
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы
Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
|
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
|