На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
Внимание!
В связи с запланированным апгрейдом системы форум и большинство других наших сервисов (*.sources.ru, drkb.ru, codersclub.*)
временно будут недоступны с 01 мая по 07 мая 2021г.
Приносим наши искренние извинения за причинённые неудобства!
msm.ru
! Соблюдайте общие правила форума
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Указывайте точные версии Delphi и используемых сетевых библиотек.

Не приветствуется поднятие старых тем. Если ваш вопрос перекликается со старой темой, то для вопроса лучше создать новую тему, а старую указать в первом сообщении с описанием взаимосвязи.

Внимание:
попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...

Полезные ссылки:
user posted image MSDN Library user posted image FAQ раздела user posted image Поиск по разделу user posted image Как правильно задавать вопросы


Выразить свое отношение к модераторам раздела можно здесь: user posted image Krid, user posted image Rouse_

Модераторы: Krid, Rouse_
  
> Сервер чата, TCPServer
    1. Куда отправляет сообщения ТСР Сервер? :)
    2. Как послать всем логинившимся в чате сообщение?
      1.
      Отправляет подключившимся клиентам.

      2.
      for i:=0 to 9 do ServerSocket1.Socket.Connections[i].SendText('bla bla bla');

      Отправили первым 10 подключившимся :)

      А на вскидку всем (могу ошибатся)
      for i:=0 to ServerSocket1.Socket.(тут могу приврать ConnectionsCount-1 вроде)
      do ServerSocket1.Socket.Connections[i].SendText('bla bla bla');
        _Nj, большое спасибо! Но как задействовать ServerSocket? Там что надо сделать? Поставить что-нибудь в Uses? ^_^ ^_^ ^_^
        Сообщение отредактировано: Dialup5 -
          Мне нужно на Borland Delphi 7 !
            блин... я в инет хожу временно не со своего компа, а тут делфей нет.

            там компонент на закладке Internet есть TServerSocket и TClientSocket... И ксати в drkb есть по ним примеры, качай читай там хватает всего...DRKB.
              Гыг( У тя наерна не Borland Delphi 7 (((((
              Там Сокеты и Клиенты, Сокеты и Клиенты объединены( И там нет TServerSocket и TClientSocket
                  ExpandedWrap disabled
                    unit Unit1;
                     
                    interface
                     
                    uses
                      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
                      Dialogs, ScktComp, StdCtrls;
                     
                    type
                      TForm1 = class(TForm)
                        Memo1: TMemo;
                        Edit1: TEdit;
                        Button1: TButton;
                        ServerSocket1: TServerSocket;
                        procedure Button1Click(Sender: TObject);
                        procedure FormCreate(Sender: TObject);
                        procedure ServerSocket1ClientRead(Sender: TObject;
                          Socket: TCustomWinSocket);
                        procedure FormClose(Sender: TObject; var Action: TCloseAction);
                        procedure ServerSocket1ClientConnect(Sender: TObject;
                          Socket: TCustomWinSocket);
                      private
                        { Private declarations }
                      public
                        { Public declarations }
                      end;
                     
                    var
                      Form1: TForm1;
                       Text1: String;
                       ConClients: integer;
                    implementation
                     
                    {$R *.dfm}
                     
                    procedure TForm1.FormCreate(Sender: TObject);
                    begin
                    ConClients:=-1;
                    Memo1.Clear;
                    ServerSocket1.Port:=9560;{Ïîðò äëÿ ïðîñëóøèâàíèÿ}
                    ServerSocket1.Active:=true;{Àêòèâàöèÿ ïðîñëóøèâàíèÿ ïîðòà}
                    Memo1.Lines.Add('Ñåðâåð Âêëþ÷¸í');
                    end;
                     
                    procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
                      Socket: TCustomWinSocket);
                    begin
                     Text1:= Socket.ReceiveText;
                     ServerSocket1.Socket.Connections[0].SendText(Text1);
                     Memo1.Lines.Add(Text1);
                    end;
                     
                    procedure TForm1.Button1Click(Sender: TObject);
                    begin
                     for ConClients:=0 to ConClients do ServerSocket1.Socket.Connections[0].SendText(Edit1.Text);
                     Memo1.Lines.Add(Edit1.Text);
                     Edit1.Text:='';
                    end;
                     
                    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
                    begin
                     ServerSocket1.Active:=False;
                    end;
                     
                    procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
                      Socket: TCustomWinSocket);
                    begin
                      ConClients:=ConClients+1;
                      for ConClients:=0 to ConClients do ServerSocket1.Socket.Connections[ConClients].SendText('Êëèåíò ïîäêëþ÷èèëñÿ');
                      Memo1.Lines.Add('Êëèåíò ïîäêëþ÷èèëñÿ');
                    end;
                     
                    end.


                  Добавлено
                  Там ошибка при подключении второго и более клиента!
                    Dialup5, у меня так - и все работает, 2 и более клиента подключаются нормально

                    СЕРВЕР

                    ExpandedWrap disabled
                      unit UServerMain;
                       
                      interface
                       
                      uses
                        Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
                        Dialogs, StdCtrls, ScktComp;
                       
                      type
                        TForm1 = class(TForm)
                          ServerSocket1: TServerSocket;
                          Button1: TButton;
                          ListBox1: TListBox;
                          procedure ServerSocket1ClientRead(Sender: TObject;
                            Socket: TCustomWinSocket);
                          procedure Button1Click(Sender: TObject);
                          procedure FormCreate(Sender: TObject);
                        private
                          { Private declarations }
                        public
                          { Public declarations }
                        end;
                       
                      var
                        Form1: TForm1;
                       
                      implementation
                       
                      {$R *.dfm}
                       
                      procedure TForm1.Button1Click(Sender: TObject);
                      begin
                        ServerSocket1.Active := false;
                        ServerSocket1.Close;
                        Close;  
                      end;
                       
                      procedure TForm1.FormCreate(Sender: TObject);
                      begin
                        ServerSocket1.Port   := 777;
                        ServerSocket1.Active := true;
                      end;
                       
                      procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
                        Socket: TCustomWinSocket);
                      var
                        s : string;
                        i : integer;
                      begin
                          s := TimeToStr(now) + ' ' + Socket.ReceiveText;
                        //s := TimeToStr(now) +  ' ' + '>' + ' ' + Socket.ReceiveText;
                        ListBox1.Items.Add(s);
                        for I := 0 to ServerSocket1.Socket.ActiveConnections - 1 do
                          if ServerSocket1.Socket.Connections[i].SocketHandle <> Socket.SocketHandle then
                            ServerSocket1.Socket.Connections[i].SendText(s);
                      end;
                       
                      end.



                    КЛИЕНТ

                    ExpandedWrap disabled
                      unit UClientMain;
                       
                      interface
                       
                      uses
                        Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
                        Dialogs, ScktComp, StdCtrls;
                       
                      type
                        TForm1 = class(TForm)
                          edSendText: TEdit;
                          btnConnect: TButton;
                          edAdress: TEdit;
                          edPort: TEdit;
                          btnSend: TButton;
                          ClientSocket1: TClientSocket;
                          Label1: TLabel;
                          Label2: TLabel;
                          edName: TEdit;
                          Label3: TLabel;
                          Memo1: TMemo;
                          procedure ClientSocket1Connecting(Sender: TObject;
                            Socket: TCustomWinSocket);
                          procedure btnSendClick(Sender: TObject);
                          procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
                          procedure FormDestroy(Sender: TObject);
                          procedure btnConnectClick(Sender: TObject);
                        private
                          { Private declarations }
                        public
                          { Public declarations }
                        end;
                       
                      var
                        Form1: TForm1;
                        Nick : string;
                       
                      implementation
                       
                      {$R *.dfm}
                       
                      {Connect}
                      procedure TForm1.btnConnectClick(Sender: TObject);
                      begin
                        ClientSocket1.Host    := edAdress.Text;
                        ClientSocket1.Port    := StrToInt(edPort.Text);
                        Nick := edName.Text;
                        if not ClientSocket1.Active then ClientSocket1.Active := true;
                        edName.Enabled        := false;
                        edAdress.Enabled      := false;
                        edport.Enabled        := false;
                        btnConnect.Enabled    := false;
                      end;
                       
                      {Send message}
                      procedure TForm1.btnSendClick(Sender: TObject);
                      begin
                        if edSendText.Text <> '' then
                          begin
                            ClientSocket1.Socket.SendText(Nick + ' ' + ' > ' + ' ' + edSendText.Text);
                            Memo1.lines.Add(TimeToStr(now) + ' ' + Nick + ' ' + ' > ' + ' ' +  edSendText.Text);
                            edSendText.Text := '';
                          end;
                      end;
                       
                      procedure TForm1.ClientSocket1Connecting(Sender: TObject;
                        Socket: TCustomWinSocket);
                      begin
                        Socket.SendText(Nick + ' Вошел в чат');
                      end;
                       
                      procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
                      begin
                        Memo1.Lines.Add(Socket.ReceiveText);
                      end;
                       
                      procedure TForm1.FormDestroy(Sender: TObject);
                      begin
                        ClientSocket1.Socket.SendText(Nick + ' Покинул чат');
                        ClientSocket1.Active := false;
                        ClientSocket1.Close;
                        Close;
                      end;
                       
                      end.
                      Я уже решил, подругому) Но спс

                      Добавлено
                      Всё
                        в Делфи 7 нет таких компонентов (TServerSocket), как можно их заменить? TCPServer это оно и есть?
                          Цитата VuseR @
                          в Делфи 7 нет таких компонентов (TServerSocket), как можно их заменить? TCPServer это оно и есть?

                          Нет это не то. Взято из 3 DRKB:
                          Цитата
                          The TClientSocket and TServerSocket components seem to be missing from my installation of Delphi 7?
                          You will need to add the dclsockets package to the IDE. To do this go to Component | Install Packages | Add (/bin/dclsockets70.bpl).
                          :)
                            Спасибо за помощь, установил ;)
                            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                            0 пользователей:


                            Рейтинг@Mail.ru
                            [ Script execution time: 0,0444 ]   [ 16 queries used ]   [ Generated: 5.05.21, 21:44 GMT ]