Вверх ↑
Пакеты 
HiAsm4
Windows 
Компоненты 
Интepнeт 
Общие - TCP_Server

TCP_Server
Краткое описание
   Компонент предназначен для работы с TCP сокетом.
Параметры
  • Port - Порт сервера
  • DataType - Тип данных для передачи и приёма
  • Методы
  • doOpen - Устанавливает соединение
  • doClose - Закрывает соединение
  • doSend - Отсылает данные в порт
  • doCloseAll - разрывает соединение со всеми клиентами
  • События
  • onRead - Приём данных из порта ARG(Data, IP)
  • onConnect - Событие происходит при соединении нового клиента к серверу и выдает в поток его IP
  • onDisconnect - Событие происходит при отсоединении клиента от сервера и выдает в поток его IP
  • onServerConnect - Событие происходит при успешном создании сервера
  • onServerDisconnect - Событие происходит при успешном закрытии сервера
  • onProgress - Событие происходит всякий раз при пересылке массива данных (DataType = dtStream)
  • onError - Событие происходит при ошибке работы с сокетом
  • Свойства
  • Count - Содержит кол-во активных соединений (клиентов)
  • IP - Содержит массив IP адресов всех клиентов, соединенных с сервером
  • Данные
  • Data - Данные для отправки клиентам
  • Port - Определяет порт сервера
  • Примеры
       Пример отправки сообщения клиенту
    
    Add(MainForm,6678,70,70)
    {
    Left=312
    Top=322
    Width=478
    Height=183
    Caption="Пример TCP"
    Position=1
    link(onCreate,20680:doOpen,[(132,90)(132,132)])
    }
    Add(Message,20231,238,224)
    {
    Message="Client disconnect!"
    Caption="Server"
    }
    Add(Button,85596,322,133)
    {
    Left=260
    Top=65
    Font=[Arial,8,0,0,1]
    Caption="close"
    link(onClick,96010:doClose,[])
    }
    Add(TCP_Client,96010,413,126)
    {
    Port=180
    IP="127.0.0.1"
    link(onRead,14313:doAdd,[])
    link(onConnect,36990:doMessage,[(472,139)(472,188)])
    link(onDisconnect,90966:doMessage,[(464,146)(464,230)])
    }
    Add(Button,53265,70,133)
    {
    Left=30
    Top=65
    Font=[Arial,8,0,0,1]
    Caption="close"
    link(onClick,20680:doClose,[])
    }
    Add(Button,24613,70,175)
    {
    Left=30
    Top=90
    Font=[Arial,8,0,0,1]
    Caption="send"
    Data=String(Hello!)
    link(onClick,20680:doSend,[(132,181)(132,146)])
    }
    Add(ListBox,92252,238,126)
    {
    Left=95
    Top=40
    Width=100
    Height=70
    Font=[Arial,8,0,0,1]
    }
    Add(Button,98765,322,175)
    {
    Left=260
    Top=90
    Font=[Arial,8,0,0,1]
    Caption="send"
    Data=String(I am Client!!)
    link(onClick,96010:doSend,[(384,181)(384,146)])
    }
    Add(ListBox,14313,483,126)
    {
    Left=325
    Top=40
    Width=110
    Height=70
    Font=[Arial,8,0,0,1]
    }
    Add(Button,67336,322,91)
    {
    Left=260
    Top=40
    Font=[Arial,8,0,0,1]
    Caption="open"
    link(onClick,96010:doOpen,[(384,97)(384,132)])
    }
    Add(Message,4920,238,182)
    {
    Message="Client connect!"
    Caption="Server"
    }
    Add(Message,90966,483,224)
    {
    Message="I'am disconnect!"
    Caption="Client"
    }
    Add(Message,36990,483,182)
    {
    Message="I'am connected!"
    Caption="Client"
    }
    Add(Timer,92181,70,322)
    {
    link(onTimer,76512:doStrCat,[])
    }
    Add(Label,82216,238,322)
    {
    Left=95
    Top=115
    Width=100
    Font=[Arial,8,0,0,1]
    }
    Add(TCP_Server,20680,161,126)
    {
    Port=180
    Point(onServerConnect)
    link(onRead,92252:doAdd,[])
    link(onConnect,4920:doMessage,[(219,139)(219,188)])
    link(onDisconnect,20231:doMessage,[(212,146)(212,230)])
    link(onServerConnect,3042594:doMessage,[(204,153)(204,272)])
    }
    Add(StrCat,76512,154,322)
    {
    Str1="Clients:"
    link(onStrCat,82216:doText,[])
    link(Str2,20680:Count,[])
    }
    Add(Message,3042594,238,266)
    {
    Message="start server"
    }
    Add(Label,12598862,161,70)
    {
    Left=115
    Top=15
    Width=41
    Height=17
    Font=[MS Sans Serif,8,1,0,1]
    Caption="Server"
    }
    Add(Label,8793954,414,70)
    {
    Left=355
    Top=15
    Width=36
    Height=17
    Font=[MS Sans Serif,8,1,0,1]
    Caption="Client"
    }


       Пример создания примитивного WEB сервера, умеющего по любому запросу отдавать заранее указанный текст. Для проверки его работы нужно после запуска зайти по адресу [url]http://localhost:81[/url]

    
    Add(MainForm,2953706,56,105)
    {
    Height=237
    link(onCreate,5232688:doOpen,[])
    }
    Add(TCP_Server,5232688,154,119)
    {
    Port=81
    Point(doCloseAll)
    link(onRead,13560533:doData,[])
    }
    Add(DoData,13560533,203,119)
    {
    link(onEventData,7486227:doEvent1,[(246,125)(246,162)(102,162)(102,139)])
    link(Data,3848228:Text,[])
    }
    Add(Memo,3848228,203,63)
    {
    Left=15
    Top=15
    Width=355
    Height=175
    Strings=#13:it is work!!!|
    }
    Add(Hub,7486227,119,133)
    {
    link(onEvent1,5232688:doSend,[])
    link(onEvent2,5232688:doCloseAll,[])
    }
    Add(LinkTip,2046136,70,70)
    {
    Link="http://localhost:81/"
    Font=[MS Sans Serif,8,0,16711680,1]
    }
    Замечания
    Обновление элемента: [svn]TCP_Server.pas[/svn]
    BB-code статьи для вставки
    Всего комментариев: 0
    (комментарии к статье еще не добавлены)
    Комментарий
    ...