Здравствуйте, у меня такой вопрос:
я пишу приложение по типу клиенты<->сервер, использую компоненты TServerSocket и TClientSocket. Каждый клиент подсоединяется к серверу и присылает ему какие-то данные, структуры(небольшого объема, >100 байт), когда сервер получил данные от клиента, он их должен передать в точно таком же виде всем
другим клиентам. Вопрос в том, а правильно ли я реализую это ?
P.S. ServerType:=stNonBlocking;
Вот как делаю я:
Код:
procedure TForm1.OnClientRead(Sender: TObject; Socket: TCustomWinSocket);
var
Buf:Struct;
i:integer;
begin
Socket.ReceiveBuf(Buf,SizeOf(Buf));
for i := 0 to Server.Socket.ActiveConnections - 1 do
if Server.Socket.Connections[i].RemoteAddress<> Socket.RemoteAddress then
Server.Socket.Connections[i].SendBuf(Buf,SizeOf(Buf));
end;
__________
Меня здесь волнует то, что если например одновременно придет несколько сообщений от разных клиентов правильно ли их обработает сервер и отошлет другим клиентам нужные сообщения, всё ли обработает, всё ли отошлет ?
Пойдет ли такая реализация клиентов/сервера или нужно как-то создавать потоки, что если от одного клиента пришло сообщение, то сервер отправляет это сообщение уже не из этой процедуры, а с другого потока ? И если это нужно именно так, то подскажите пожалуйста, как это должно выглядеть.
P.S. Клиентов много не рассчитывается, где-то в районе 2-10.