Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Разорвать все соединения к серверу  (Прочитано 11810 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
SCRIBE
Гость
« : 11-01-2017 09:43 » 

Привет.

Пока ответа не нашел, можно ли как-то программно разорвать все соединения к определенному серверу (если ты не сервер а клиент)?

Спасибо.
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 11-01-2017 10:23 » new

В TCP обе стороны равноправны. Просто закрой соединения со своей стороны.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
SCRIBE
Гость
« Ответ #2 : 11-01-2017 11:02 » 

Ну пока нашел как разорвать вообще интернет соединение, мне же надо только к серверу.
Главный ньюанс в том, что подключается не моя программа. Может на секунду в hosts его прописать что-ли?)
Записан
SCRIBE
Гость
« Ответ #3 : 11-01-2017 11:20 » 

Так можно узнать,
https://theroadtodelphi.com/2010/02/21/checking-if-a-tcp-port-is-open-using-delphi-and-winsocks/
но как разорвать если занят. Здесь была моя ладья...

вроде бы то:
http://stackoverflow.com/questions/5351599/get-app-path-by-socket-port
« Последнее редактирование: 11-01-2017 11:33 от ..::SCRIBE::.. » Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 11-01-2017 11:57 » 

Файл hosts используется на этапе перевода имени домена в IP. Немного прокачать теорию не помешает...
Hosts ты можешь использовать для подмены IP до выполнения соединения.

Если это не твой процесс, то напрямую разорвать ты не можешь. Значит: либо через фишки ОС, либо послать самому себе или удаленному серверу фиктивный пакет TCP с флагом RST - получатель расценивает его как моментальное завершение соединения. Оба варианта не простые.
« Последнее редактирование: 11-01-2017 11:59 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
SCRIBE
Гость
« Ответ #5 : 11-01-2017 12:04 » 

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

Фиктивный пакет? А где почитать можно?
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 11-01-2017 17:15 » 

Тема весьма обширна: IP, TCP, raw socket.
Но думаю, лучше более четко понять цель, это сэкономит время.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
SCRIBE
Гость
« Ответ #7 : 11-01-2017 18:54 » 

Есть клиент, подключается к серверу х.х.х.х по порту хххх, я знаю их, и хочу этот клиент разъединить(дропнуть, оборвать связь, накликать беду=)
В общем, хочу чтоб у него случился трабл, чтоб он подумал что сервер недоступен.
Задача вообще по сути сделать недоступным сервер для одной программы, или вообще для всех, не сильно важно. Главное чтоб это было обратимо=)
Записан
zubr
Гость
« Ответ #8 : 11-01-2017 19:21 » 

Вариантов - много. Навскидку несколько:
1. Инжект в процесс-жертву с перехватом там сокетных функций.
2. Сетевой драйвер аля WinPCap
3. Сделать свой прокси, на который перенаправить, используя hosts запросы к серверу.
Записан
SCRIBE
Гость
« Ответ #9 : 13-01-2017 07:35 » 

Я реализовал через поиск процесса, подключенного к этому хосту и собственно его завершение. (по ссылке которую уже нашел).

Спасибо всем за помощь.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines