|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
вопрос по поводу ServerSocket и ClientSocket'ов
Здравствуйте, у меня такой вопрос:
я пишу приложение по типу клиенты<->сервер, использую компоненты 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. Если Вы находите ошибки, исправить которые дело долгое и нудное, ничего не делайте - просто внесите их в список особенностей |