Создание сетевого чата на C++ Builder 6

.

В этой статье я расскажу как в шестом билдере написать свой чат по сети.

Создаем две папки: сервер и клиент.

Для начала создадим сервер.  Запустим билдер,  создадим новый проект (File->New->Application).  Сразу сохраним его в папку «сервер». Добавляем на формы следующие компоненты и изменяем свойства:

  • Label1 — В свойстве Caption пишем «Порт»
  • Edit1 — В свойстве Text пишем «5648», это будет наш порт для подключения, можно задать любой другой.
  • Button1 — В свойстве Caption пишем «Создать»
  • Memo1 — В свойстве Lines удаляем все строки
  • Edit2 — В свойстве Text стираем все символы
  • Button2 — В свойстве Caption пишем «Отправить»
  • ServerClient1 — Ничего не меняем


Теперь необходимо переименовать наши компоненты,  для этого изменяем свойство «Name»:

  • Label1 — Оставим как есть
  • Edit1 -> EditPort
  • Button1 -> ButtonStart
  • Memo1 -> MemoMessages
  • Edit2 -> EditMessage
  • Button2 -> ButtonSend
  • ServerClient1 -> ServerClient
  • Form1 -> FormMain

Все компоненты аккуратно расставили, и теперь начинаем писать код. Дважды щелкаем по кнопке «Создать», пешем следующий код:

Далее нам необходимо написать функцию рассылки сообщений, ее нужно писать после функции __fastcall TFormMain::TFormMain(TComponent* Owner). Код:

Кстати еще в .h файле в разделе private необходимо написать void SendingMessages(AnsiString Message);

Вернемся на форму, выберем у ServerSocket обработчик OnClientRead в вкладке Events, щелкаем два раза, пишем код:

Щелкаем два раза по кнопке отправить, пишем код:

И последнее, выберем у формы обработчик OnClose и впишем в него:

Компилируем, сервер готов.

Теперь напишем клиент. Создаем новый проект (File->New->Application).  Сразу сохраним его в папку «клиент». Добавляем на формы следующие компоненты и изменяем свойства:

  • Label1 — В свойстве Caption пишем «Порт»
  • Label2 — В свойстве Caption пишем «Хост»
  • Label3 — В свойстве Caption пишем «Ник»
  • Edit1 — В свойстве Text пишем «5648», это будет наш порт для подключения, можно задать любой другой.
  • Edit2 — В свойстве Text пишем «127.0.0.1»
  • Edit2 — В свойстве Text пишем «Гость»
  • Button1 — В свойстве Caption пишем «Подключиться»
  • Memo1 — В свойстве Lines удаляем все строки
  • Edit2 — В свойстве Text стираем все символы
  • Button2 — В свойстве Caption пишем «Отправить»
  • ServerSocket1 — Ничего не меняем 🙂

Теперь необходимо переименовать наши компоненты,  для этого изменяем свойство «Name»:

  • Label1 -> Оставим как есть
  • Label2 -> Оставим как есть
  • Label3 -> Оставим как есть
  • Edit1 -> EditPort
  • Edit2 -> EditHost
  • Edit2 -> EditName
  • Button1 -> ButtonConnect
  • Memo1 -> MemoMessages
  • Edit2 -> EditMessage
  • Button2 -> ButtonSend
  • ServerSocket1 -> ServerSocket

Пишем код для компонентов, начнем с кнопки «Подключиться»:

Кнопка «Отправить»:

Обработчик OnRead у компонента ClientSocket:

Обработчик OnClose у формы:

Все, клиент тоже готов. Компилируем…
Теперь можем проверить работоспособность нашего чата, для этого сначала запускаем сервер, жмем «создать». Затем запускаем клиент, жмем «Соединиться». Пробудем писать, сообщения должны отсылаться и отображаться в каждом окне.

Исходник: sozdanie-setevogo-chata-na-c-builder-6.zip

Будут вопросы, обращайтесь!

VN:F [1.9.20_1166]
Пожалуйста оцените статью, мне очень важно Ваше мнение!
Rating: 9.2/10 (23 votes cast)
Создание сетевого чата на C++ Builder 6, 9.2 out of 10 based on 23 ratings
Поделиться ссылкой с друзьями:

Comments

    1. ден, на одном компе запускаешь сервер, на другом клиента. В клиенте указываешь ip сервера и подключайся. Все должно работать…

    1. Грант, на компьютере должен быть установлен C++ Builder 6. В будущем приложение можно скомпилировать для запуска даже без установленного Builder’a.

  1. ОГРОМНОЕ спасибо, очень просто и доходчиво. Безмерно благодарен, продолжай в том же духе))

    1. Яша, а смысл в этом? Без сервера не получится. Но можно запустить у одного человека сервер, у второго клиента и общаться. В серверуню часть так же встроен чат.

  2. хочу сделать прогу чтобы разговаривали люди по сети, чтобы 2 человека говорили между собой и в тоже время штобы другие могли говорить между собой. Это возможна ???

    1. Яша, это возможно и через этот чат. Один человек запускает сервер, другой клиент и общаются между собой. Сделедующие 2 человека делают тоже самое только указывают другой порт, к примеру на еденицу больше от предыдущего.

  3. А можно использовать эти же компоненты (ServerSocket и ClientSocket) для передачи данных, некоторые данные из таблицы в таблицу например?

  4. Понял, спасибо, еще один маленький вопрос, эти компоненты единственные в своем роде или есть еще похожие на них компоненты?

  5. Дружище, а можно с тобой как-то связаться? У меня не выходит соединение по ip, замучался уже — ни одно решение не помогло. vkid — oliverjg, заранее спасибо

  6. Можно ли сделать чтобы автоматически вписывался хост у клиентв, если я не знаю на каком компютере запущен сервер

    1. Я впринципе понимаю глупость вопроса, но задача просто такая: человек, неизвестно кто, запускает сервер, и остальные кто нажимают подключится с программы клиент, они подключались к этому серверу

      1. Иван, да, и правда немного глупая задумка как мне кажется. Но я думаю это осуществимо. Просто программе-клиенту придется сканировать всю подсеть в поисках сервера.

            1. отправьте пожалуйста если не трудно весь код буду очень признателен. Я имею ввиду со всеми директивами На пример :

              #include
              #pragma hdrstop

              #include «Main.h»
              #include «About.h»
              #include «settingsform.h»

              ….

  7. Мне он для курсовой работы нужен,код полностью нужен, вроде обрезки есть, но по факту нужен полностью код к курсовой, был бы признателен тебе если бы отправил бы.

  8. Привет. Подскажи пожалуйста. Даю другу, что бы не по локалке, а именно по инету, у него ошибка 10060. В чем загвоздка может быть?

    1. Денис, в том и загвоздка что «не по локалке». Это программа для локальной сети. В глобальной сети ее можно использовать только в случае если оба компа имеют белые IP и подключены без всяких роутеров на пути, ну или настроен проброс портов.

  9. А возможно как то настроить программу, может быть там чуть по другому переписать, что бы на обеих сторонах с роутерами, да и скорее всего с серыми IP работало?
    Может быть с другими компонентами какими то..
    Подскажи пожалуйста хотя бы технологию 🙂

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *