Форум: "Начинающим";
Текущий архив: 2006.08.27;
Скачать: [xml.tar.bz2];
ВнизПередача файла! Найти похожие ветки
← →
serko © (2006-07-27 00:25) [0]Здрасте!
Вообщем есть у меня код для передачи файла на другой комп с помощью ServerSocket и ClientSocket. Работает все и ок если бы не одно но!
у меня в сети 10 компов, которые могут включаться в любом порядке. И возникает необходимость передавать этот файт то 1 компу, то группе компов то вообще всем!
Вопрос: как я могу знать каким по счету он подключится к ServerSocket?
Ну вот отправил я всем запрос на прием файла, отозвался один или группа т.е. я могу узнать его Имя или еще че нить. Но как узнать кому его отправлять я не могу понять как это сделать!
Ведь отправляю я так:
Form1.ServerSocket1.Socket.Connections[0].SendStream(fs);
Вот это файл уйдет только 1-му.
Ну я надеюсь вы меня поняли че мне надо и поможете мне!
← →
Сергей М. © (2006-07-27 09:50) [1]
> это файл уйдет только 1-му.
>
А для Connections[1] - второму, для Connections[2] - третьему и т.д.
> как узнать кому его отправлять
Кто запросил, тому и отправляй.
← →
serko © (2006-07-27 22:41) [2]Ну это я понимаю!
Хорошо спрошу так! Если какое то свойство в котором хранится номер подключения клиента? ну т.е. второй он или пятый либо вообще не подключен!
← →
serko © (2006-07-28 21:48) [3]Ну ну! не надо игнорировать!
← →
Юра (2006-08-03 16:15) [4]Есть свойство Connections. Дальше можно хоть так:
1. При соединении на сервере в событии ServerSocket1ClientConnect запоминаешь Handle сокета... например, в лист.
2. При событии ServerSocket1ClientRead смотришь, какой номер у тебя в листе Handle сокета, из которого ты читаешь.
Таким образом, ты знаешь, с кем именно ты общаешься. Это очень грубо, но работает. Можно заставить клиентов запрашивать файлы, написав свой протокол поверх TCP/IP,можно вытаскивать их ip из соединения и так идентифицировать. Можно еще что-нибудь придумать :)
Количество одновременно подключенных клиентов хранится в ServerSocket1.Socket.ActiveConnections.
Можно сделать что-то вроде:
for i := 0 to ServerSocket1.Socket.ActiveConnections-1 do
begin
здесь смотрим, если клиенту, связанному с этим сокетом, надо посылать, то
ServerSocket1.Socket.Connections[i].SendStream(MyStream);
end;
← →
Сергей М. © (2006-08-03 16:21) [5]
> serko © (27.07.06 22:41) [2]
> ну т.е. второй он или пятый
Сейчас он, клиент, в этом списке, предположим, 4-й, а через долю секунды он, тот же самый активный клиент, запросто может стать третьим .. и даже первым..
И как ты на это будешь реагировать, при твоей логике, ориентированной на "номер подключения" ?
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.08.27;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.07 c