ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    TClientSocket & TServerSocket
         

     

    Інформатика, програмування

    TClientSocket & TServerSocket

    Макагон Сергій

    У C + + Builder 6 для передачі будь-якої інформації з мережі зручніше за все використовувати компоненти закладку Internet: TClientSocket і TServerSocket.

    Щоб краще розібратися в роботі цих компонентів я пропоную написати простенький мережевий чат, на прикладі якого можна буде легко побачити компоненти в дії.

    Для початку створимо новий проект (File-> New-> Application), помістимо на форму компоненти:

    TClientSocket і TServerSocket, щоб наша програма могла бути і клієнтом і сервером (не одночасно звичайно;)).

    Далі розмістимо компонент TMemo (закладка Standart) -- в нього як ви здогадалися буде відображатися текст чату.

    Наступним на форму потрібно кинути компонент TEdit (Standart) - у нього ми будемо писати текcт, який потрібно відправити співрозмовникові.

    Ну і звичайно важко обійтися без кнопки відправити -- кидаємо на форму TButton. Крім того що вже є на формі, нам ще знадобиться три кнопки і два Едіта (TEdit) (їх призначення описується по ходу звернення до ним).

    Отже, на формі:

    ClientSocket1 і ServerSocket1

    Memo1

    Edit1, Edit2, Edit3

    Button1, Button2, Button3, Button4

    Тепер змінюємо властивості:

    Button1-> Caption на "Відправити"

    Button2-> Caption на "Створити"

    Button3-> Caption на "Помилка з'єднання" і

    Button4-> Caption на "Вимкнути".

    Прибираємо текст у всіх Едіт. Властивість Memo1-> ReadOnly = true,

    ClientSocket1-> Host - потрібно написати IP-адреса сервера до якого ви будете Присоеденяюсь

    (IP-адреса встановлюється в настройках з'єднання Windows), якщо прописати 127.0.0.1, то ви будете конектитись до себе на комп'ютер (так зручно робити, коли перевіряєш на працездатність свою програму. Запустивши її двічі, один клієнт з 127.0.0.1, а інша сервер!) якщо ж ви коннектітся до одного, то заздалегідь домовтеся якою буде Ай-Пі-адреса (143.0.0.5 - наприклад). Але для того щоб Ай-Пі-адресу можна було легко змінити, ми й поклали на форму один з Едіт, його текст при коннекте і відповідатиме властивості ClientSocket1-> Host і ClientSocket1-> Address.

    У властивості ClientSocket1-> Port і ServertSocket1-> Port - повинні стояти однакові значення, щоб Сервер і Клієнт прослуховували і працювали на один порт. Число можна вибрати будь-яке (1024 наприклад).

    Кнопку "Від'єднатись" спочатку потрібно зробити недоступною (Enabled = false) тому що спочатку отсоеденяться нам немає від кого.

    Далі опишемо обробники подій для кнопок "Створити", "Помилка з'єднання", "Вимкнути".

    Кнопка "Створити" - активізує сервер. Він починає прослуховувати порт для підключення з боку клієнта.

    void __fastcall TForm1:: Button2Click (TObject * Sender)

    (

    ServerSocket1-> Active = true;

    // Робимо недоступну "Помилка з'єднання" (так як ми вже сервер)

    Button3-> Enabled = false

    // Робимо доступну "Від'єднатись" (зрозуміло навіщо)

    Button4-> Enabled = True

    Memo1-> Lines-> Add ( "Сервер створений");

    )

    Так наша програма стала сервером!

    Давайте опишемо клієнта! (Кнопка "Помилка з'єднання")

    У Edit3-> Text впишіть 127.0.0.1 - передбачається що буде тестуватися на одному комп'ютері (що б інших не морочитися:)

    void __fastcall TForm1:: Button3Click (TObject * Sender)

    (

    Edit3-> Text = ClientSocket1-> Host// Надаємо Клієнту Ай-Пі з Едіта

    Edit3-> Text = ClientSocket1-> Address

    ServerSocket1-> Active = True;

    // Робимо недоступну "Створити" (так як ми Коннект)

    Button2-> Enabled = false

    // Робимо доступну "Від'єднатись" (зрозуміло навіщо)

    Button4-> Enabled = true

    )

    От Ви і написали той мінімум який треба для освоєння компонентів!

    Але хто хоче зупинятися? А чат доробити! Правильно пишемо далі:

    Далі будемо описувати властивості компонентів Клієнта і Сервера OnConnect (коли приєднався).

    void __fastcall TForm1:: ServerSocket1ClientConnect (TObject * Sender,

    TCustomWinSocket * Socket)

    (

    Memo1-> Lines-> Add ( "Клієнт приєднався ");

    )

    Це коли ви сервер і до Вас приєдналися, на Мемо з'явиться напис!

    Для клієнта майже так само:

    void __fastcall TForm1:: ClientSocket1Connect (TObject * Sender,

    TCustomWinSocket * Socket)

    (

    Memo1-> Lines-> Add ( "Ви приєднані ");

    )

    Зрозуміло, так? Дуже добре, далі залишається тільки розповісти Вам навіщо Edit2 на формі і описати кнопку "Відправити".

    Отже, Едіт2 нам потрібен для Вашого ника! Адже який чат без ника!

    Тепер найголовніше - опис кнопки "Відправити :

    if (Edit2-> Text == "")

    ShowMessage ( "Нік !");

    return;

    )

    if (Edit1-> Text == "")

    (

    ShowMessage ( "Введіть текст який треба відправити ");

    return;

    )

    // Це була обробка виняткових ситуацій, типу порожніх строк введення;

    Memo1-> Lines-> Add (Edit2-> Text + ":: "+ Edit1-> Text);

    if (ServerSocket1-> Active == true) (

    ServerSocket1-> Socket-> Connections [0 ]->

    SendText (Edit2-> Text +"::"+ Edit1-> Text); )

    else

    ( ClientSocket1-> Socket-> SendText (Edit2-> Text +"::"+ Edit1-> Text );}

    Edit1-> Text = "";

    )

    Тепер розберемося з цією купою коду:

    // додаємо своє повідомлення себе в Мемо

    Memo1-> Lines-> Add (Edit2-> Text + ":: "+ Edit1-> Text);

    if (ServerSocket1-> Active == true) (ServerSocket1-> Socket->

    Connections [0] -> SendText (Edit2-> Text +"::"+ Edit1-> Text )};

    Якщо ми сервер, то посилаємо нашу рядок першого в списку клієнтові (чат розщітан на двох), інакше:

    else (

    ClientSocket1-> Socket-> SendText (Edit2-> Text +"::"+ Edit1-> Text);

    )

    Посилаємо рядок серверу!

    Незалежно від того хто ми (клієнт-сервер)

    Очищаємо Едіт1:

    Edit1-> Text = "";

    Також треба описати прийом інформації та занесення її в Мемо1. Робиться це обробником події OnRead у TClientSocket і TserverSocket :

    void __fastcall TForm1:: ClientSocket1Read (TObject * Sender,

    TCustomWinSocket * Socket)

    (

    Memo1-> Lines-> Add (Socket-> ReceiveText ()) ;

    )

    void __fastcall TForm1:: ServerSocket1ClientRead (TObject * Sender,

    TCustomWinSocket * Socket)

    (

    Memo1-> Lines-> Add (Socket-> ReceiveText ()) ;

    )

    Ось вроди б і все. З TClientSocket і TserverSocket розібралися, а кого зацікавила тема чату, заходьте в розділ "Мої програми "І качайте закінчаться мною, з великою кількістю налаштувань програму разом з исходниками.

    Список літератури

    Для підготовки даної роботи були використані матеріали з сайту http://www.realcoding.net/

         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status