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

Вниз

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

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

Наверх




Память: 0.5 MB
Время: 0.059 c
4-1083320755
svetlana
2004-04-30 14:25
2004.06.06
Хэндл строки состояния чужого окна


14-1084691208
Mim1
2004-05-16 11:06
2004.06.06
Хотели бы вы увидить этот форум в NNTP?


4-1082818484
gRad
2004-04-24 18:54
2004.06.06
Параметры ф-ий из dll


3-1084428750
goozman
2004-05-13 10:12
2004.06.06
SQL запрос


1-1085514574
CoderX
2004-05-25 23:49
2004.06.06
Имя RichEdit