Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.12.2006, 15:39   #1
hawk1
 
Регистрация: 06.12.2006
Сообщений: 3
По умолчанию TTcpServer и TUdpSocket блокируют порт

Здраствуйте!
Я являюсь админом одного игрового сервера. К сожалению игрушка не передает IP игроков и в ней нет возможности бана.
В связи с огромным наплывом читеров возникла необходимость бана именно по IP. Через файрвол это очень гемморойно, поэтому попытался сам наваять прогу в Дельфях7. С Делфи знаком довольно давно, но именно сетевых приложений не писал ни разу.
Итак: само описание проблемы.
Делфи 7.
Игрушка для связи использует 2 протокола - TCP\IP и UDP. Соответственно, для прослушивание порта используем 2 компонента из стандартных в Делфи7 - TTcpServer и TUdpSocket. Назначаем им хост и порт и вот тут начинаются проблемы. Такое впечатление, что при активации этих компонентов они блокируют порт. Т.е. При запуске сначала программы, а потом игрушки, игрушка не может запустить сервер(при этом программа может получать пакеты от клиентов). Если запустили сначала игрушку, а затем программу - программа ничего не принимает, хотя клиенты на сервер игрушки коннектятся вполне спокойно, т.е. идет активный обмен пакетами.
Установка BlockMode в bmNonBlocking в обоих компонентах ситуацию не исправило
Кроме того, возникает необходимость смотреть не только те пакеты которые поступают серверу, но и те, которые сервер пересылает клиенту.
Подскажите, пожалуйста, как можно спокойно слушать порт не мешая при этом приложению.
Если такая тема была - дайте пожалуйста ссылку, если для этого нужны нестандартные компоненты - подскажите где их можно скачать.
Если не сложно - продублируйте ответ на hawk1[собака]inbox.ru
hawk1 вне форума Ответить с цитированием
Старый 06.12.2006, 22:05   #2
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,758
По умолчанию

запрос на подключение - программа анализатор - игра. Больше проверки производить не надо. вероятно у тебя программа отслеживае каждый пакет, что не нужно, необходимо авторизацию производить через делфи программу не более, тогда проблем не должно возникать.
Alar вне форума Ответить с цитированием
Старый 07.12.2006, 08:58   #3
hawk1
 
Регистрация: 06.12.2006
Сообщений: 3
По умолчанию

Цитата:
Сообщение от Alar Посмотреть сообщение
запрос на подключение - программа анализатор - игра. Больше проверки производить не надо. вероятно у тебя программа отслеживае каждый пакет, что не нужно, необходимо авторизацию производить через делфи программу не более, тогда проблем не должно возникать.
Не совсем понял...
Мне необходимо отлавливать по крайней мере 3 пакета:
1-ый, от клиента - серверу: идентификация, запрос на подключение.
2-ой, сервер-клиенту: разрешение на подключение, присваивание номера игроку.
3-ий, клиент-серверу: Передача ника.
Ну и следить чтоб IP-шник был подключен.
hawk1 вне форума Ответить с цитированием
Старый 07.12.2006, 12:54   #4
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,758
По умолчанию

Я тебе предложил реализовать так -
Delphi программа получает запрос на авторизацию, проверяет все данные пользователя, потом, если он не в бане, передаёт эти данные серверу...
Програамма будет не отлавливать сообщения, а получать их напрямую, т.е пользователь не будет иметь доступа к игровому серверу, пока его программа не подключит.


А вот вопрос реализации другая тема, с этим тебе придёться разбираться самостоятельно...
Alar вне форума Ответить с цитированием
Старый 07.12.2006, 17:08   #5
hawk1
 
Регистрация: 06.12.2006
Сообщений: 3
По умолчанию

Цитата:
Сообщение от Alar Посмотреть сообщение
Я тебе предложил реализовать так -
Delphi программа получает запрос на авторизацию, проверяет все данные пользователя, потом, если он не в бане, передаёт эти данные серверу...
Програамма будет не отлавливать сообщения, а получать их напрямую, т.е пользователь не будет иметь доступа к игровому серверу, пока его программа не подключит.
Т.е. пустить весь траффик через дельфовую программку? Я думаю, от такого "счастья" клиентам в плане пинга заметно поплохеет.
hawk1 вне форума Ответить с цитированием
Старый 07.12.2006, 23:29   #6
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,758
По умолчанию

Нет не весь траффик, а только авторизацию, запрос на подключение.
Alar вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
COM-порт daunito Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 7 15.01.2009 18:50
TTcpServer и client JoanM Работа с сетью в Delphi 3 07.03.2008 17:23
порт ps/2 _Dmitry Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 01.10.2007 21:28
COM порт, или LPT... _riddik Общие вопросы Delphi 1 08.06.2007 22:33
СОМ порт SERG1980 Общие вопросы Delphi 3 17.05.2007 08:06