IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> TServerSocket, вопрос
сообщение
Сообщение #1


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


У TServerSocket есть свойство ActiveConnections. К подключениям можно обращаться как TServersocket1.Socket.activeConnection[1].sendtext('!');. Так вот, допустим, к серверу подключился клиент, потом ещё один и ещё один. Потом первый клиент отключился и опять подключился. Каким по счёту он будет в ActiveConnections?


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Цитата
К подключениям можно обращаться как TServersocket1.Socket.activeConnection[1].sendtext('!');.
Неправда... Свойство ActiveConnection вообще не присутствует, а ActiveConnections - это обычное целое число... Как минимум, надо обращаться вот так:
  ServerSocket1.Socket.Connections[1].SendText('!');

Цитата
допустим, к серверу подключился клиент, потом ещё один и ещё один. Потом первый клиент отключился и опять подключился. Каким по счёту он будет в ActiveConnections?
А тебе не все равно? Зачем тебе знать, каким он будет? Ты что завязываешься на его положение в массиве? Глупо... Привязывайся к SocketHandle для идентификации клиента, так будет гораздо надежнее... Пример - здесь: http://www.delphirus.com/article5.html
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Цитата
А тебе не все равно? Зачем тебе знать, каким он будет? Ты что завязываешься на его положение в массиве? Глупо...


Ага, глупо, только понял я это только когда сервер начал отправлять сообщение не тому клиенту, которому нужно, основываясь на положении его в ЛистБоксе, т.е. какое положение - тому равен ActiveConnections для отправки(ну connections[i], хотя там по другомуsmile.gif). А SocketHandle - это как бы имя сокета? И чему оно равно?

Всё, понял, это Handle клиента, приславшего сообщение.

А как можно узнать SocketHandle того или иного клиента? В примере этого не было..

Сообщение отредактировано: Unconnected -


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Всё, разобрался.. Разъясните пожалуйста ещё одну вещь, можно ли создать поток именно в директории программы? Создаю например fsy:=TfileStream.Create(yname,fmcreate); , (yname - это ВСЕГДА просто имя файла, без путей, типа ReadMe.txt). Так вот, файл может создаваться как в текущей директории, так и в директории, где последний раз "побывал" TOpenDialog... С чем это связано, я не знаю.. Можно ведь указать какой-то относительный путь, чтобы файл создавался в директории программы?


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Цитата
С чем это связано, я не знаю..
С тем, что TOpenDialog/TSaveDialog меняют системные переменные.
Цитата
Можно ведь указать какой-то относительный путь, чтобы файл создавался в директории программы?
Можно... Для этого тебе надо будет просто сделать:
fsy:=TfileStream.Create(ExtractFilePath(ParamStr(0)) + yname, fmcreate);

 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Спасибо, работает good.gif Как же много вещей, которые просто знать надо..


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Не стал поднимать новую тему, т.к. проблема относится к сокетам.

Так вот, моя программа передаёт файлы и сообщения между компьютерами, но: когда я подключаюсь к себе через Localhost в качестве "хоста" для TClientSocket, то всё нормально, файлы передаются, сообщения тоже доходят. Когда же подключаюсь к удалённому компьютеру по IP-адресу, то сообщения доходят, а передача файлов ведёт себя как-то странно. Чаще всего вообще не передаёт. Вот я и задумался, ведь подключение через Интернет ничем не хуже "loopback" соединения.. И подозрение пало на KIS 7. Больше никакого "оборонного" софта не установлено. (Windows XP SP3). Есть подозрение, что он не пропускает большое количество пакетов за раз (сообщения при включенном KIS доходят нормально). Может, у него такая "защита" от DDos-атак? Никто не сталкивался с подобным?


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Цитата
Больше никакого "оборонного" софта не установлено
А ты встроенному FireWall-у WinXP SP3 сказал, что твои файлы надо пропускать? Я даже сообщения не мог передавать, пока не внес свою программу в список его исключений, не говоря уже о файлах. Или он у тебя отключен? Control Panel -> Windows Firewall, проверь.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Сразу оговорюсь, что SP3 не был интегрирован, я его дополнительно устанавливал. А брандмауэр у меня включён, но там как бы вместо стандартного используется KIS, так и написано, KIS включён. Сам брандмауэр Windows отключен. К тому же, на свой компьютер я передавать могу.. Или это другое?

Сообщение отредактировано: Unconnected -


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Кстати, различные Интернет-приложения (ICQ) он ведь впускает в сеть..


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гость






Цитата
Кстати, различные Интернет-приложения (ICQ) он ведь впускает в сеть..
Он впускает ровно то, что указано в его списке исключений или в правилах (KIS-а у меня никогда не было, я не знаю, куда именно там надо заходить, но все брандмауэры работают по схожим схемам), или по имени программы, или по номеру порта. Не обращал внимание никогда, что при первом запуске какой-либо программы Firewall спрашивает, "что делать с программой <...>, которая рвется в сеть через порт №<...>"?

Проверь настройки KIS, и разреши своей программе отправлять сообщения.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Так у меня то пропускает без вопросов..Вопрос в том, может ли антивирус одни пакеты (мессаджи) пропускать, а другие (файлы) задерживать?


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 19.04.2024 16:17
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name