Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/25: Рейтинг темы: голосов - 25, средняя оценка - 4.72
 Аватар для GaFBich
22 / 22 / 5
Регистрация: 18.03.2010
Сообщений: 331

Простой IRC клиент

12.12.2010, 22:45. Показов 5146. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Товарищи пишу IRC клиента, точнее использую чужой код(с другого форума), мысли были ровно такие же, но решил просто поискать.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
====================================================================
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
//{ connecting to IRC server ... }
ClientSocket1->Host=Edit1->Text;
ClientSocket1->Port=StrToInt(Edit2->Text);
ClientSocket1->Active=true;
 
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ClientSocket1Read(TObject *Sender,
TCustomWinSocket *Socket)
{
 
AnsiString data;
 
//{ received data from IRC server }
data=ClientSocket1->Socket->ReceiveText();
Memo1->Lines->Add(data);
int i=data.Pos("PING");
if (i!= 0) {
data[i+1]='O';
Memo1->Lines->Add(data);
ClientSocket1->Socket->SendText(data);
}
 
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ClientSocket1Connect(TObject *Sender,
TCustomWinSocket *Socket)
{
ClientSocket1->Socket->SendText("NICK "+Edit4->Text+ '\r'+'\n');
ClientSocket1->Socket->SendText("USER " + Edit4->Text + " "+
ClientSocket1->Socket->LocalHost + " " + ClientSocket1->Socket->LocalAddress
+ " " + ": " +Edit4->Text+ '\r'+'\n');
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
//{ 2 basics commands, /join #channel ant /msg #channel/nickname message }
 
AnsiString S;
S=Edit3->Text+'\r'+'\n';
ClientSocket1->Socket->SendText(S);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
ClientSocket1->Socket->SendText("QUIT :Askim Askim"+'\r'+'\n');
ClientSocket1->Socket->Close();
}
//---------------------------------------------------------------------------
 
 
h файл
 
==================================================================================
//---------------------------------------------------------------------------
 
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <classes.hpp>
#include <controls.hpp>
#include <stdctrls.hpp>
#include <forms.hpp>
#include <scktcomp.hpp>
#include <extctrls.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TMemo *Memo1;
TClientSocket *ClientSocket1;
TPanel *Panel1;
TEdit *Edit4;
TEdit *Edit1;
TEdit *Edit2;
TButton *Button1;
TEdit *Edit3;
TButton *Button2;
void __fastcall Button1Click(TObject *Sender);
void __fastcall ClientSocket1Read(TObject *Sender,
TCustomWinSocket *Socket);
void __fastcall ClientSocket1Connect(TObject *Sender,
TCustomWinSocket *Socket);
void __fastcall Button2Click(TObject *Sender);
void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif

Когда отсылаю серверу команду, предположим /join он ругается и выдает
:irc-m04.icq.aol.com 421 GaF /join :Unknown command.
В чем соль?

Добавлено через 57 минут
Вроде разобрался, надо посылать команду "JOIN имя канала", но появилась еще одна проблема когда я привязываю кнопке какую-то команду, к примеру
C++
1
2
ClientSocket1->Socket->SendText("PRIVMSG #имя канала :Buy"+'\r'+'\n');
ClientSocket1->Socket->SendText("QUIT"+'\r'+'\n');
не работает, если я ее привяжу к TEdit
C++
1
2
3
4
5
6
7
8
9
void __fastcall TForm1::Edit3KeyPress(TObject *Sender, char &Key)
{
if(Key==VK_RETURN)
        {
        AnsiString S;
        S=Edit3->Text+'\r'+'\n';
        ClientSocket1->Socket->SendText(S);
        }
}
то работает, в чем проблема?

Добавлено через 3 часа 38 минут
Как получить список пользователей если команда NAMES запрещена на сервере.

Добавлено через 5 часов 0 минут
Если использовать IdIRC, каким образом принимать сообщения от IRC сервера?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.12.2010, 22:45
Ответы с готовыми решениями:

Простой клиент, скачивание данных, загрузка
Написал простой &quot;клиент&quot; который скачивает с хостинга данные а сервер их туда загружает. Дело в том что на моем компе клиент работает, а на...

Простой клиент-сервер С++
Добрый день уважаемые форумчане. Вообщем есть задача сделать клиент-сервер на С++ через сокеты. Условия: После успешной проверки на...

Простой http клиент
Добрый день! Помогите разобраться новичку с QNetworkAccessManager. Имеется простенькая консольная программа которая отсылает http запросы,...

4
 Аватар для GaFBich
22 / 22 / 5
Регистрация: 18.03.2010
Сообщений: 331
14.12.2010, 06:53  [ТС]
Привожу отчет, написал простейший IRC клиент при помощи компонента IdIRC входящий в состав палитры INDY, но заключение такого характера, для создание более гибкого лучше использовать сокеты к примеру я использовал TClientSocket. Кому интресно пишите в личку, помогу и разъясню!
0
0 / 0 / 0
Регистрация: 30.03.2018
Сообщений: 2
10.07.2023, 07:33
Автор, ты тут? Ищется простейший irc клиент под win.
0
Модератор
 Аватар для D1973
9921 / 6457 / 2457
Регистрация: 21.01.2014
Сообщений: 27,406
Записей в блоге: 3
10.07.2023, 09:09
Цитата Сообщение от Semenov_Ivan Посмотреть сообщение
Автор, ты тут?
А самому посмотреть?
Изображения
 
0
0 / 0 / 0
Регистрация: 30.03.2018
Сообщений: 2
10.07.2023, 12:24
Естественно я это сделал. Написал, надеясь на то, что у него установлены уведомления на получения новых ответов. Ну вдруг
Хотел посмотреть что у него получилось.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.07.2023, 12:24
Помогаю со студенческими работами здесь

Простой прокси клиент!
Доброе время суток, Вопрос больше из теории нежели из практики. Преамбула. Решил написать свой плеер для любимого сайта с...

Простой сервер-клиент на сокетах
В сокетах ещё новичок прошу строго не ругать, моя первая попытка написать что-то. Собственно проблема заключается в том, что при...

Простой клиент/сервер, ошибки
Ниже приведен клиент. Ошибка следующего характера появляется: QObject::connect: No such slot MainWindow::sockDisk() in...

Простой пример клиент/сервера
Хочу написать синхронный клиент-сервер в качестве теста работы boost/asio,набрасал код,вот только клиент вроде как подключается,а сервер не...

Простой клиент-сервер UDP
Всем добрый вечер! Для осознания, почему контроллер не связывается с компьютером, решил отработать клиент-серверное взаимодействие по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru