Страница: 1 |
Страница: 1 |
Вопрос: Winsock Server
Добавлено: 18.01.09 22:15
Автор вопроса: Aston | ICQ: 214-179-991
Привет всем.
У меня возникла такая проблема. Сделал Winsock Server, который слушает по определённому порту. Компонент Winsock используется в массиве и при каждом новом подключении создаётся новый компонент и сново слушает. Проблему с отключением и использованием старых отключённых компонентов Winsock я решил. Проблема состоит в том что этот компонент предназначен и для работы в интернет. Я тестю программу на компе и интернет часто бывает включён и у меня кроме моего 1 клиента подключается ещё кто то по этому же порту - что мне очень бы не хотелось.
Можно ли как то при подключении идентифицировать того кто подключается чтобы избавится от ненужных подключений?
Ответы
Всего ответов: 9
Номер ответа: 1
Автор ответа:
Arseny
ICQ: 298826769
Вопросов: 53
Ответов: 1732
Профиль | | #1
Добавлено: 18.01.09 23:59
Хм... странно... А что ты за порт слушаешь, 80 что-ли? А вообще - в начале просто пересылай какую-нибудь строку, а сервер пусть проверяет - есть строка - работаем дальше, нет - разрываем соединение...
Номер ответа: 2
Автор ответа:
Aston
ICQ: 214-179-991
Вопросов: 42
Ответов: 272
Профиль | | #2
Добавлено: 19.01.09 02:20
Порт 2010 слушаю. Я эту идею прошёл. проблема в том, что событие Коннект происходит только на клиенте, тое после соединения только клиент отзывается что соединился. На сервере этого события не происходит, оно в коде получается делается(Слушаем, поступил запрос на соединение - соединяемся.)
Тут прописывать код для строки получаемой от клиента даже смысла нет не успеет дойти.
Я с клиента пересылаю строку что соединился. У меня ещё была такая проблема, что соединялся но как то по левому, тое соединение вроде есть но передача данных не происходит (ошибки лезут).
для этого на клиенте таймер стоит, который переподсоединяет до тех пор пока пердача данных не будет нормальной - это всё работает и нормально.
Твоё предложение можно принять, и это по ходу тоже надо в таймере ставить(по другому идей даже нет).
Но тут надо подумать дальше. При твоём случае соединение, строка не пришла, дисконект и сново слушаем и соединение. Проблема состоит в том что пару Winsock всё равно будут забиты левым соединением(хотя и будут отключатся и подключатся).
Тут должно быть что то радикальное
У меня если честно пока ничего в голову не пришло.
Номер ответа: 3
Автор ответа:
Arseny
ICQ: 298826769
Вопросов: 53
Ответов: 1732
Профиль | | #3
Добавлено: 19.01.09 08:22
так по-другому все равно наверное никак... если только проверять IP, и разрешать только известным.
Номер ответа: 4
Автор ответа:
Sneaks
Вопросов: 9
Ответов: 84
Профиль | | #4
Добавлено: 19.01.09 10:38
поставь фаервол
Номер ответа: 5
Автор ответа:
Roman
Вопросов: 2
Ответов: 2
Web-сайт:
Профиль | | #5
Добавлено: 19.01.09 10:52
Ой, а можно пожалуйста рассказать про вот это?
А то очень надо. Спасибо заранее.
Номер ответа: 6
Автор ответа:
Aston
ICQ: 214-179-991
Вопросов: 42
Ответов: 272
Профиль | | #6
Добавлено: 19.01.09 12:15
На счёт Апи подумаю, может что то дельное придумаю.
Рома шас повторю код, хотя он был и выше.
По моему мнению код простой и решение тоже, думаю разберёшься если хоть немного работал с этим компонентом.
Номер ответа: 7
Автор ответа:
Arseny
ICQ: 298826769
Вопросов: 53
Ответов: 1732
Профиль | | #7
Добавлено: 19.01.09 13:24
На счёт Апи подумаю
IP<>API
Я имел ввиду - проверять Winsock1.RemoteHostIP
Номер ответа: 8
Автор ответа:
Aston
ICQ: 214-179-991
Вопросов: 42
Ответов: 272
Профиль | | #8
Добавлено: 19.01.09 14:58
Я понял правильно, подумаю как это реализовать как можно лучше и устроит ли оно меня. Пока что я использую отдельно массив нормально подключённых и работаю с ним
Номер ответа: 9
Автор ответа:
Smith
ICQ: adamis@list.ru
Вопросов: 153
Ответов: 3632
Профиль | | #9
Добавлено: 19.01.09 22:48
Стоит ли заморачиваться с этими левыми коннектами?
Если они активно паразитируют, понятно, а если это просто глюк?
Я бы не стал раздувать нормальный рабочий код, ради достижения недостижимого.