Главная страница
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.036 c
1-1152823459
01
2006-07-14 00:44
2006.08.27
PopupMenu сейчас на экране или убралось


1-1152790476
Rater1
2006-07-13 15:34
2006.08.27
dde после выполнения макроса не сбрасывает флаг waitstat


15-1154018289
ronyn
2006-07-27 20:38
2006.08.27
Date change of File s


2-1154026632
кккккккккккк
2006-07-27 22:57
2006.08.27
плавоющее окно


15-1154333399
GrayFace
2006-07-31 12:09
2006.08.27
Magic Forum Patch v0.0