Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.08.27;
Скачать: CL | DM;

Вниз

Передача файла!   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.145 c
1-1152639434
MikProg
2006-07-11 21:37
2006.08.27
Сенсация! Код initialization может не выполнятся!


4-1146637983
razor
2006-05-03 10:33
2006.08.27
Как получить данные с мат. платы (данные с термодатчиков и т.д.)


2-1155060328
Батыр
2006-08-08 22:05
2006.08.27
Proxy


2-1155146708
Hgr
2006-08-09 22:05
2006.08.27
Текст письма


2-1154961514
Alral
2006-08-07 18:38
2006.08.27
Vopros o CheckBox i MainMenu