Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
1-1152715844
oleggar
2006-07-12 18:50
2006.08.27
автоматизация Paint или другой путь ?


2-1155139658
ProgramMaker_
2006-08-09 20:07
2006.08.27
Как после того как я сделал Hide, снова восстановить форму?


15-1153978624
palva
2006-07-27 09:37
2006.08.27
Статья Н. Елмановой в Компьютер-пресс


11-1132130105
-=Mike=-
2005-11-16 11:35
2006.08.27
Как в TKOLListView установить фокус на определенный элемент


15-1154061799
Гостья из прошлого
2006-07-28 08:43
2006.08.27
С Днём системного администратора!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский