45864 (TClientSocket & TServerSocket)

2016-08-02СтудИзба

Описание файла

Документ из архива "TClientSocket & TServerSocket", который расположен в категории "". Всё это находится в предмете "информатика" из , которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "остальное", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "45864"

Текст из документа "45864"

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/

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5160
Авторов
на СтудИзбе
439
Средний доход
с одного платного файла
Обучение Подробнее