Лидеры рейтинга

ID: 259041

Алексеев Владимир Николаевич

Мастер-Эксперт

1061

Россия, пос. Теплоозёрск, ЕАО


ID: 226425

Konstantin Shvetski

Модератор

314

Россия, Северодвинск


ID: 401284

Михаил Александров

Советник

278

Россия, Санкт-Петербург


ID: 137394

Megaloman

Мастер-Эксперт

158

Беларусь, Гомель


ID: 400669

epimkin

Профессионал

105


ID: 404002

sglisitsyn

6-й класс

42


ID: 242862

Hunter7007

Мастер-Эксперт

30

Россия, Омск


8.10.3

30.10.2021

JS: 2.10.3
CSS: 4.6.0
jQuery: 3.6.0
DataForLocalStorage: 2021-12-04 11:45:59-standard


Создание программ на языках C и C++.

Администратор раздела: CradleA (Мастер-Эксперт)

Консультация онлайн # 160210

Раздел:  С / С++
Автор вопроса: Maximus777
Дата: 11.02.2009, 17:11 Консультация закрыта
Поступило ответов: 0

Уважаемые эксперты!
В приложении код сервера, который должен "висеть" и слушать порт. К нему коннектятся клиенты. Но в самом сервере имеется какой-то баг. Два (могут успеть три или четыре) клиента коннектятся и после этого порт оказывается в дауне, хотя те кто успел вполне нормально работают. Помогите найти ошибку. Баг 100% на стороне сервера, т.к. коннект разными клиентами (включая telnet) даёт одинаковый эффект. Написанный же на дельфи аналогичный сервер работает без вопросов, хоть с 20-тью клиентами.

Приложение:

Ответов пока не поступило
Мини-форум консультации # 160210
Ross

1

= общий =    11.02.2009, 20:04

Попробуйте вынести создание сокета и привязку его к порту из цикла, а в цикле оставить только listen и accept. Может быть после этого проблема решится.

q_id

Хватов Сергей

Академик

ID: 20764

2

= общий =    11.02.2009, 21:50

В linux такое работать вообще не должно: после закрытия слушающего сокета порт освобождается далеко не сразу (через несколько минут) и уже второй bind() должен не удасться. Там с этим можно бороться, установив с помощью setsockopt() опцию SO_REUSE.
Но в вашем случае каждый раз его переоткрывать действительно странное решение.

неизвестный

3

= общий =    12.02.2009, 06:46

Спасибо огромное за советы. Это не мой код. Я в сях не силён. И с сокетами познакомился пару дней назад. Но чувствую спинным мозгом что вы абсолютно правы. Хвала вам и почёт! Куда заэсэмэсить для благодарностей?

неизвестный

4

= общий =    12.02.2009, 14:31

Уважаемые эксперты! Всё было именно так, как вы и сказали. Теперь всё работает без вопросов. Спасибо огромное за помощь.

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Лучшие эксперты раздела

Зенченко Константин Николаевич

Старший модератор

Рейтинг: 244

Коцюрбенко Алексей Владимирович

Старший модератор

Рейтинг: 197

Лысков Игорь Витальевич

Мастер-Эксперт

Рейтинг: 43

Gluck

9-й класс

Рейтинг: 42

CradleA

Мастер-Эксперт

Рейтинг: 22

Вадим Исаев ака sir Henry

Мастер-Эксперт

Рейтинг: 2