Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/16: Рейтинг темы: голосов - 16, средняя оценка - 4.75
50 / 40 / 5
Регистрация: 30.06.2010
Сообщений: 1,191

Чат

04.08.2010, 15:38. Показов 3125. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Можете кто нить кинуть исходник простенького чата с сервером?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.08.2010, 15:38
Ответы с готовыми решениями:

Чат
Кто может показать рабочий пример TcpClient->TcpServer, что б при запуске клиента отправлялось сообщение серверу и наоборот (Будем с...

Чат
Нужен совет, как реализовать два и более подключения к серверу.

чат
Создал чат с помощью Socket киент и сервер при подключении клиента к серверу происходит такая ошибка Asynchronous socket error 10060.

9
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
04.08.2010, 15:53
ProstoMad, может быть, будет вам полезно Отладка кода Клиент/Сервер ?
0
50 / 40 / 5
Регистрация: 30.06.2010
Сообщений: 1,191
04.08.2010, 17:01  [ТС]
Кто нить если может помочь, напишите то что я не понял или исправьте что не правильно подписал пжл.
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
//---------------------------------------------------------------------------
 
void __fastcall TForm1::ClientSocket1Connect(TObject *Sender,
      TCustomWinSocket *Socket)
{     //При включении сервера Пишется в статик "Connected" и активируется кнопка2
    StaticText1->Caption="Connected";
        Button2->Enabled=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
 
 
{       //Сервер Создает порт 3000 и включается
    
        ServerSocket1->Port=3000;
        ServerSocket1->Active=true;
 
 
        //Клинт подключается к серверу с ИП"127.0.0.1" и портом 3000
 
    ClientSocket1->Address="127.0.0.1";
        ClientSocket1->Port=3000;
        ClientSocket1->Active=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ClientSocket1Disconnect(TObject *Sender,
      TCustomWinSocket *Socket)
 
 
{         //при отключении сервера в статике пишется "Connected" и кнопка 2 недоступна
    StaticText1->Caption="Connected";
        Button2->Enabled=false; 
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ClientSocket1Error(TObject *Sender,
      TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode)
 
 
     //это не знаю что
{
    ErrorCode=0;    
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ClientSocket1Read(TObject *Sender,
      TCustomWinSocket *Socket)
 
      //тоже не знаю
{
    Memo1->Lines->Add("Client has received from server: "+Socket->ReceiveText());
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ServerSocket1ClientConnect(TObject *Sender,
      TCustomWinSocket *Socket)
 
        //не уверен, но кажется при подключении сервера к клиенту
{
    StaticText2->Caption="Connected";
        Button3->Enabled=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ServerSocket1ClientDisconnect(TObject *Sender,
      TCustomWinSocket *Socket)
 
 
        //при отключении сервера от клиента пишется в статик и недоступна кнопка
{
    StaticText2->Caption="Disconnected";
        Button2->Enabled=false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ServerSocket1ClientError(TObject *Sender,
      TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode)
 
          //незнаю
{
    ErrorCode=0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender,
      TCustomWinSocket *Socket)
 
           //знаю только то что добавляется строка в мемо, а вот что такое +Socket->ReceiveText()
          //и что за событие
{
    Memo1->Lines->Add("Server has received from client: "+Socket->ReceiveText());
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
 
       //если клиент включен, то что то пишется, а куда хз.
{
    if(ClientSocket1->Active)
        ClientSocket1->Socket->SendText("Hallo server!!!");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
 
 
        //то же самое, только еще Connections[0] зачем то добавилось
{
    if(ServerSocket1->Active)
        ServerSocket1->Socket->Connections[0]->SendText("Hallo Client!!!");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
 
 
     //отрубаются клиент и сервер
{
    ServerSocket1->Active=false;
        ClientSocket1->Active=false;
}
//---------------------------------------------------------------------------
Добавлено через 23 минуты
и я еще пытаюсь разделить на две программы, клиент и отдельно сервер.
Вот код сервера
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
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
AnsiString S="Сообщение от серва";
AnsiString C="Сообщение от клиента";
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
   Memo1->Text="";
}
/* //---------------------------------------------------------------------------
void __fastcall TForm1::ClientSocket1Connect(TObject *Sender,
      TCustomWinSocket *Socket)
{
    StaticText1->Caption="Connected";
        Button2->Enabled=true;
}
*/ //---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 
        ServerSocket1->Port=3000;
        ServerSocket1->Active=true;
    /*ClientSocket1->Address="127.0.0.1";
        ClientSocket1->Port=3000;
        ClientSocket1->Active=true; */
}
/* //---------------------------------------------------------------------------
void __fastcall TForm1::ClientSocket1Disconnect(TObject *Sender,
      TCustomWinSocket *Socket)
{
    StaticText1->Caption="Connected";
        Button2->Enabled=false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ClientSocket1Error(TObject *Sender,
      TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode)
{
    ErrorCode=0;    
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ClientSocket1Read(TObject *Sender,
      TCustomWinSocket *Socket)
{
    Memo1->Lines->Add("Client has received from server: "+Socket->ReceiveText());
}
*/ //---------------------------------------------------------------------------
void __fastcall TForm1::ServerSocket1ClientConnect(TObject *Sender,
      TCustomWinSocket *Socket)
{
    StaticText2->Caption="Connected";
        Button3->Enabled=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ServerSocket1ClientDisconnect(TObject *Sender,
      TCustomWinSocket *Socket)
{
    StaticText2->Caption="Disconnected";
        //Button2->Enabled=false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ServerSocket1ClientError(TObject *Sender,
      TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode)
{
    ErrorCode=0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender,
      TCustomWinSocket *Socket)
{
    Memo1->Lines->Add("пишет "+Socket->ReceiveText());
}
/* //---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
    if(ClientSocket1->Active)
        ClientSocket1->Socket->SendText(C);
}
*/ //---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
    if(ServerSocket1->Active)
        ServerSocket1->Socket->Connections[0]->SendText(S);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
    ServerSocket1->Active=false;
        //ClientSocket1->Active=false;
}
//---------------------------------------------------------------------------
Пишет ошибки:
[C++ Error] Unit1.cpp(89): E2316 '_fastcall TForm1::Button3Click(TObject *)' is not a member of 'TForm1'
[C++ Error] Unit1.cpp(95): E2316 '_fastcall TForm1::FormClose(TObject *,TCloseAction &)' is not a member of 'TForm1'
0
Эксперт С++
 Аватар для MikeSoft
3956 / 1811 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
04.08.2010, 17:02
Вот поэтому, разработку ПО нужно начинать с прочтения документации к компоненту, которым вы собираетесь пользоваться.

ClientSocket1Error - это событие, которое возникает при возбуждении исключения в TClientSocket. Что автор хотел сказать строкой Error = 0 - неизвестно! Исключения нужно обрабатывать, а не просто пропускать.

ClientSocket1Read - событие, возникающее тогда, когда клиент получает данные.
ServerSocket1ClientConnect - событие идентифицирует подключение клиента к серверу.

Цитата Сообщение от ProstoMad Посмотреть сообщение
C++
1
ServerSocket1->Socket->Connections[0]->SendText("Hallo Client!!!");
Класс Connections содержит список всех активных подключений, поэтому номер будет "указывать" сокет для посылки данных.

Цитата Сообщение от ProstoMad Посмотреть сообщение
Пишет ошибки:
[C++ Error] Unit1.cpp(89): E2316 '_fastcall TForm1::Button3Click(TObject *)' is not a member of 'TForm1'
[C++ Error] Unit1.cpp(95): E2316 '_fastcall TForm1::FormClose(TObject *,TCloseAction &)' is not a member of 'TForm1'
Вполне логичные ошибки!
Кнопка Button3 присутствует на форме? (у неё указан обработчик OnClick?)
У Form1 не определён обработчик OnClose.
0
50 / 40 / 5
Регистрация: 30.06.2010
Сообщений: 1,191
04.08.2010, 17:10  [ТС]
если на Форме на кнопку нажать два раза он не в событие OnClick записывает?
0
Эксперт С++
 Аватар для MikeSoft
3956 / 1811 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
04.08.2010, 17:18
ProstoMad, именно в OnClick.
0
50 / 40 / 5
Регистрация: 30.06.2010
Сообщений: 1,191
04.08.2010, 17:33  [ТС]
когда делать из этого клиент, что делать например с этим:
C++
1
2
3
4
5
void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender,
      TCustomWinSocket *Socket)
{
    Memo1->Lines->Add("пишет "+Socket->ReceiveText());
}
Добавлено через 21 секунду
его оставлять или убирать?

Добавлено через 4 минуты
наверн удалять)

Добавлено через 9 минут
Терь клиент не получается((
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
114
115
116
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "ClientUnit.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
AnsiString S="серв";
AnsiString C="клиент";
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
   Memo1->Text="";
}
 
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 
        /*ServerSocket1->Port=3000;
        ServerSocket1->Active=true;*/
    ClientSocket1->Address="109.191.48.25";
        ClientSocket1->Port=3000;
        ClientSocket1->Active=true;
}
 
/* //---------------------------------------------------------------------------
void __fastcall TForm1::ServerSocket1ClientConnect(TObject *Sender,
      TCustomWinSocket *Socket)
{
    StaticText2->Caption="Connected";
        Button3->Enabled=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ServerSocket1ClientDisconnect(TObject *Sender,
      TCustomWinSocket *Socket)
{
    StaticText2->Caption="Disconnected";
        //Button2->Enabled=false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ServerSocket1ClientError(TObject *Sender,
      TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode)
{
    ErrorCode=0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender,
      TCustomWinSocket *Socket)
{
    Memo1->Lines->Add("пишет "+Socket->ReceiveText());
}
 
//---------------------------------------------------------------------------  */
void __fastcall TForm1::Button3Click(TObject *Sender)
{
    if(ClientSocket1->Active)
        ClientSocket1->Socket->SendText(C);
}
 
//---------------------------------------------------------------------------
 
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
    //ServerSocket1->Active=false;
        ClientSocket1->Active=false;
}
/* //---------------------------------------------------------------------------
 
void __fastcall TForm1::Button3Click(TObject *Sender)
{
        if(ServerSocket1->Active)
        ServerSocket1->Socket->Connections[0]->SendText(S);
}
//--------------------------------------------------------------------------- */
 
void __fastcall TForm1::ClientSocket1Connect(TObject *Sender,
      TCustomWinSocket *Socket)
{
    StaticText1->Caption="Connected";
        Button3->Enabled=true;
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::ClientSocket1Disconnect(TObject *Sender,
      TCustomWinSocket *Socket)
{
    StaticText1->Caption="Connected";
        Button3->Enabled=false;
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::ClientSocket1Connecting(TObject *Sender,
      TCustomWinSocket *Socket)
{
StaticText1->Caption="Connected";        
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::ClientSocket1Error(TObject *Sender,
      TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode)
{
ErrorCode=0;
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::ClientSocket1Read(TObject *Sender,
      TCustomWinSocket *Socket)
{
Memo1->Lines->Add("Вам пишет "+Socket->ReceiveText());
}
//---------------------------------------------------------------------------
[Linker Error] Unresolved external '__fastcall TForm1::ServerSocket1ClientConnect(Syste m::TObject *, Scktcomp::TCustomWinSocket *)' referenced from C:\DOCUMENTS AND SETTINGS\ADMIN\РАБОЧИЙ СТОЛ\PROJECTS\ЧАТ\CLIENTUNIT.OBJ
[Linker Error] Unresolved external '__fastcall TForm1::ServerSocket1ClientDisconnect(Sy stem::TObject *, Scktcomp::TCustomWinSocket *)' referenced from C:\DOCUMENTS AND SETTINGS\ADMIN\РАБОЧИЙ СТОЛ\PROJECTS\ЧАТ\CLIENTUNIT.OBJ
[Linker Error] Unresolved external '__fastcall TForm1::ServerSocket1ClientError(System: :TObject *, Scktcomp::TCustomWinSocket *, Scktcomp::TErrorEvent, int&)' referenced from C:\DOCUMENTS AND SETTINGS\ADMIN\РАБОЧИЙ СТОЛ\PROJECTS\ЧАТ\CLIENTUNIT.OBJ
[Linker Error] Unresolved external '__fastcall TForm1::ServerSocket1ClientRead(System:: TObject *, Scktcomp::TCustomWinSocket *)' referenced from C:\DOCUMENTS AND SETTINGS\ADMIN\РАБОЧИЙ СТОЛ\PROJECTS\ЧАТ\CLIENTUNIT.OBJ
0
Эксперт С++
 Аватар для MikeSoft
3956 / 1811 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
04.08.2010, 17:36
Цитата Сообщение от ProstoMad Посмотреть сообщение
[Linker Error] Unresolved external '__fastcall TForm1::ServerSocket1ClientConnect(Syste m::TObject *, Scktcomp::TCustomWinSocket *)' referenced from C:\DOCUMENTS AND SETTINGS\ADMIN\РАБОЧИЙ СТОЛ\PROJECTS\ЧАТ\CLIENTUNIT.OBJ
В заголовочном файле объявлен прототип функции, которая нигде не была описана.
1
50 / 40 / 5
Регистрация: 30.06.2010
Сообщений: 1,191
04.08.2010, 17:40  [ТС]
воо...) спс)
0
18 / 18 / 8
Регистрация: 21.04.2010
Сообщений: 110
05.08.2010, 10:53
а подскажите на idTCPservere чат построен

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
//---------------------------------------------------------------------------
 
 
 
void __fastcall TMainForm::IdTCPServer1Execute(TIdContext *AContext)
{
  Log->Items->Add("Client: "+AContext->Connection->IOHandler->ReadLn()) ;
}
//---------------------------------------------------------------------------
 
void __fastcall TMainForm::Options1Click(TObject *Sender)
{
Form1->ShowModal();
}
//---------------------------------------------------------------------------
 
 
void __fastcall TMainForm::Button1Click(TObject *Sender)
{
if(!IdTCPClient1->Connected())IdTCPClient1->Connect(); else IdTCPClient1->Disconnect();
}
//---------------------------------------------------------------------------
 
void __fastcall TMainForm::FormClose(TObject *Sender, TCloseAction &Action)
{
 
 IdTCPClient1->Disconnect();
 IdTCPServer1->Active=false;
 
}
 
//---------------------------------------------------------------------------
 
 
void __fastcall TMainForm::IdTCPClient1Connected(TObject *Sender)
{
MessageBeep(-1);
}
//---------------------------------------------------------------------------
 
void __fastcall TMainForm::FormCreate(TObject *Sender)
{
 
}
//---------------------------------------------------------------------------
 
void __fastcall TMainForm::ClientSendClick(TObject *Sender)
{
if(IdTCPClient1->Connected())
    IdTCPClient1->Socket->WriteLn(Edit1->Text);
}
//---------------------------------------------------------------------------
 
 
void __fastcall TMainForm::IdTCPServer1Connect(TIdContext *AContext)
{
Log->Items->Add("Компутер присоединлся");
}
//---------------------------------------------------------------------------
 
void __fastcall TMainForm::IdTCPServer1Disconnect(TIdContext *AContext)
{
Log->Items->Add("Компьютер отключился");
}
//---------------------------------------------------------------------------
 
 
//---------------------------------------------------------------------------
 
void __fastcall TMainForm::IdTCPClient1Work(TObject *ASender, TWorkMode AWorkMode,
          __int64 AWorkCount)
{
Log->Items->Add("Server "+IdTCPClient1-> IOHandler->ReadLn());
 
 
}
fastcall TMainForm::IdTCPClient1Work << по идее данная процедура должна воспринимать сообщения от сервера но не читает
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.08.2010, 10:53
Помогаю со студенческими работами здесь

чат в с++ билер
здравствуйте у меня есть код чата на с++ билдер он компилится но не работает можете пожалуйста сказать где ошибка Сервер...

Чат на билдере
хочу написать подобие чата на билдере все, что нашел в гугле...

gif + чат
Ой тема заезженная скорее всего но ответ не могу найти. Ребят Помогите кто знает компонент в котором можно отобразить gif смайлы...

Чат по Lan...
Есть локальная сеть, надо сделать чат, который будет работать по этой сети. Чат должет уметь отправлять и принимать текстовые сообщения,...

голосовой чат
Хочу терь понять как делается голосовой чат) дайте ссылку или исходник, или прост напишите че нить про это плз Заранее спасибо ...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru