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

TCP_Client
Краткое описание
   Компонент предназначен для соединения с сервером по TCP протоколу.
Параметры
  • Port - Порт сервера
  • IP - IP адрес сервера
  • DataType - Тип данных для передачи и приёма
  • Методы
  • doOpen - Устанавливает соединение с сервером
  • doClose - Закрывает соединение
  • doSend - Отсылает данные в порт сервера
  • События
  • onRead - Приём данных из порта
  • onConnect - Событие происходит при успешном соединении клиента с сервером
  • onDisconnect - Событие происходит при отсоединении клиента от сервера
  • onError - Событие происходит при ошибке работы с сокетами и выдает её номер в поток
  • onProgress - Событие происходит всякий раз при пересылке массива данных(DataType = dtStream)
  • Свойства
  • Active - Содержит 1 если соединение активно, и 0 в противном случае
  • Данные
  • 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"
    }


       Пример выдачи сообщения при неудачном соединении с сервером

    
    Add(TCP_Client,8727113,280,161)
    {
    Port=81
    IP="93.158.134.8"
    Point(onError)
    }
    Add(Button,4953469,175,161)
    {
    Left=215
    Top=160
    link(onClick,5922307:doEvent1,[])
    }
    Add(Hub,5922307,231,161)
    {
    link(onEvent1,8727113:doOpen,[])
    link(onEvent2,5642440:doCompare,[(263,174)(263,216)])
    }
    Add(Message,6946779,329,210)
    {
    Message="Connection failed!"
    Caption="Error"
    }
    Add(If_else,5642440,280,210)
    {
    Op2=Integer(0)
    link(onTrue,6946779:doMessage,[])
    link(Op1,8727113:Active,[])
    }
    Замечания
       При отправке данных на сокет не стоит вызывать doClose сразу же после doSend - это может привести к потере данных и неверной работе схемы.

    Обновление элемента: [svn]TCP_Client.pas[/svn]
    BB-code статьи для вставки
    Всего комментариев: 0
    (комментарии к статье еще не добавлены)
    Комментарий
    ...