Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.059 c
15-1154246097
Ega23
2006-07-30 11:54
2006.08.27
С Днём рождения! 29 июля


3-1150727208
Juice
2006-06-19 18:26
2006.08.27
Как в триггере или ХП интербейса узнать текущую дату и время?


1-1152854018
AlexeyT
2006-07-14 09:13
2006.08.27
Библиотека RegEx с поиском в файлах?


4-1146849360
Teddy24
2006-05-05 21:16
2006.08.27
Как средствами API поключить сетевой диск?


9-1116212592
Xeno
2005-05-16 07:03
2006.08.27
Экшн с элементами RTS - ЭДЕМ




   Наверх