Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2004.06.06;
Скачать: [xml.tar.bz2];

Вниз

сервер. отправка всем клиентам   Найти похожие ветки 

 
lena19   (2004-04-05 08:51) [0]

Всем привет
Народ подскажите как отправить
С компонента serversocket данные всем клиентам ?


 
Anatoly Podgoretsky ©   (2004-04-05 09:31) [1]

Перебрать всех клиентов в цикле


 
lena19   (2004-04-05 11:45) [2]

for n:=0 to x do .....connecktions[n].send...
а чему равен x


 
lena19   (2004-04-05 11:49) [3]

for n:=0 to x do .....connecktions[n].send...
а чему равен x


 
Verg ©   (2004-04-05 11:52) [4]

http://delphimaster.net/view/6-1079380703/

Читай последние две строки в сообщении №14


 
Digitman ©   (2004-04-05 11:55) [5]

x = ServerSocket.Socket.ActiveConnections - 1


 
MasterDenis ©   (2004-04-15 22:19) [6]

А если в момент перебора от 0 до X одно из соединений закрылось? Исключение обрабатывать?
Не праздное любопытство - сам голову над этим ломаю.


 
Rouse_ ©   (2004-04-15 22:29) [7]

Любое исключение необходимо обрабатывать...


 
Digitman ©   (2004-04-16 10:25) [8]

var
 ms: TMemorystream;
 msg: String;
...

msg := "Сообщение";

with ServerSocket.Socket do
for i:= 0 to ActiveConnections - 1 do
begin
  ms := TMemoryStream.Create;
  try    
    ms.WriteBuffer(PChar(msg)^, Length(msg) + 1);
    ms.Position := 0;
    Connections[i].SendStream(ms);    
  except
    ms.Free;
  end;
end;


 
Rouse_ ©   (2004-04-16 11:21) [9]

> [8] Digitman ©   (16.04.04 10:25)
Вероятно finally а не except?


 
Digitman ©   (2004-04-16 11:29) [10]


> Rouse_


ни в коем случае !

безусловное разрушение ms должно происходить явно только в случае возникновения искл.ситуации

если же таковая не возникла в ходе исполнения SendStream, то стрим-объект будет автоматически разрушен в любом случае  передан ли ms успешно и полностью или при очередной pending-операции произошел неожиданный отказ трансп.канала


 
Digitman ©   (2004-04-16 11:34) [11]


> Rouse


по сути, использование здесь стрим-объекта и метода SendStream позволяет оч просто организовать индивидуальную для каждого клиента буферизацию передаваемых ему в неблок.режиме данных и легко избежать геморроя с необходимостью явной обработки OnClientWrite - в случае со стрим-передачей компонент сам обработает все FD_WRITE-события, передавая стрим кусок за куском, пока весь стрим не будет передан


 
Rouse_ ©   (2004-04-16 13:32) [12]

Да действительно, что-то уже к концу недели мозги кипят :)


 
Digitman ©   (2004-04-16 13:39) [13]

бывает) ... тяпница ж сегодня !)


 
Piter ©   (2004-04-17 14:35) [14]

MasterDenis (15.04.04 22:19) [6]
А если в момент перебора от 0 до X одно из соединений закрылось? Исключение обрабатывать?


Можно использовать for ... downto
Хотя тоже есть свои проблемы...

Digitman (16.04.04 10:25) [8]
Length(msg) + 1


А почему не просто length(Msg) ?


 
Adil   (2004-04-17 22:31) [15]

Можно делать так:
procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
 Socket: TCustomWinSocket);
begin
inc(x);
end;

procedure TForm1.ServerSocket1ClientDisconnect(Sender: TObject;
 Socket: TCustomWinSocket);
begin
dec(x);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
for i:=0 to x-1 do
ServerSocket1.Socket.Connections[i].SendText("Salam")

end;

Это самый примитивный вариант.


 
SergP ©   (2004-04-18 11:06) [16]

>Adil   (17.04.04 22:31)

ИМХО не пройдет. При отконективании или приконективании нового клиента номера подключений могут поменяться. Поэтому кто-то из клиентов может получить 2 раза одно и то-же, а кто-то нифига...

Хотя вообще-то хз.


 
Digitman ©   (2004-04-18 11:49) [17]


> почему не просто length(Msg) ?


потому что автор никак не оговорил свой фактический ПИО

в этих условиях единственным способом разграничивать строковые сообщения в потоке принимаемых есть способ сканирования вх.потока на предмет обнаружения терминирующего нуля, отправляемого передающей стороной как символ конца строки



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2004.06.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.033 c
4-1083244710
Apollo
2004-04-29 17:18
2004.06.06
wcrypt2.pas


9-1076330836
Closer
2004-02-09 15:47
2004.06.06
Завершение работы с GLUT


14-1084808594
Thor
2004-05-17 19:43
2004.06.06
покупка велосипеда.


1-1085359965
Алекс А
2004-05-24 04:52
2004.06.06
Существуют ли конверторы кода с Дельфи на BCB и обратно?


8-1080544421
WAlgo
2004-03-29 11:13
2004.06.06
Выбор конкретной области изображения





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский