CrazyChat - дружеский чат

Всё, что связано с сетями, связью и Интернетом

Re: CrazyChat - дружеский чат

Сообщение luzga » 19 фев 2026, 07:02

Я решил рассказывать, всё то, что буду делать. Фокус на изнанку так сказать. :)
Для спокойной работы, нужно создать рабочее место - workspace, как американцы говорят.
Будем работать с сетью, для этого создадим его у себя, на своём ПК. Называться он будет localhost. Обычно, localhost - это ip-адрес 127.0.0.1 но также, можно добавить
в список хостов ос Windows, любой другой IP-адрес, например 192.168.0.10 - это адрес вашего адаптера. 127.0.0.1 - виртуальный.
Записывать нужно, выполнив команду в меню выполнить:
Notepad %SystemRoot%\System32\drivers\etc\Hosts

Конечно. Сейчас нет нужды в правке файла Hosts. Это, чтобы вы были в курсе.
(Всё, что я рассказываю, для неискушенного пользователя, остальные могут не читать).

Итак. Установим на домашнем компьютере веб сайт. У меня Windows Xp, но - это
мало что меняет. Устанавливается всё таким же манером, за исключением номера
версий. Для себя, я устанавливаю старые. Вы, если у вас ос выше - современную.

Я, не так давно закачал по этой инструкции
 Развернуть: файлы
Изображение

Хорошая инструкция! Для себя, из той инструкции, я сделал конспект.
 Развернуть: File_Id.txt
===[ Установка Apache на Windows XP

Создать каталог C:\Server
В этом каталоге создайте два подкаталога:
bin (для исполнимых файлов) и data.
В каталоге data и создать подпапки DB (базы данных) и
htdocs (для сайтов).

Запустить установку httpd-2.2.25-win32-x86-openssl-0.9.8y
В качестве Network Domain и Server Name указать: localhost
в качестве почты (любой адрес): root@localhost

Выбрать Custom установку.
Изменить папку установки на C:\Server\bin\Apache2.2
После завершения установки, для проверки, открыть
в браузере: http://localhost
Должно высветится: It works!

Перейти в C:\Server\bin\Apache2.2\conf
отредактировать httpd.conf

Изменить
#ServerName localhost:80
на
ServerName localhost:80

DocumentRoot "C:/Server/bin/Apache2.2/htdocs"
на
DocumentRoot "C:/Server/data/htdocs/"

<Directory "C:/Server/bin/Apache2.2/htdocs">
на
<Directory "C:/Server/data/htdocs/">

DirectoryIndex index.html
на
DirectoryIndex index.php index.html index.htm

# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride None
на
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# AllowOverride FileInfo AuthConfig Limit
#
AllowOverride All

#LoadModule rewrite_module modules/mod_rewrite.so
на
LoadModule rewrite_module modules/mod_rewrite.so

Сохранить и закрыть файл.
Перезапустить веб-сервер или перезагрузить компьютер.
Сайты размещать в папке C:\Server\data\htdocs\

===[ Установка PHP на Windows XP

С данной версией Apache работает только PHP 5.4.9
скачать php-5.4.9-Win32-VC9-x86.zip
https://windows.php.net/downloads/releases/archives/

Установить для этой версии PHP файл
Распространяемый пакет Microsoft Visual C++ 2008 (x86)
vcredist_x86.exe
http://web.archive.org/web/201406220605 ... st_x86.exe

В папке C:\Server\bin\ создать папку PHP
распаковать в неё содержимое php-5.4.9-Win32-VC9-x86.zip

Отредактировать C:\Server\bin\Apache2.2\conf\httpd.conf
в конец, добавить:
PHPIniDir "C:/Server/bin/PHP"
AddHandler application/x-httpd-php .php
LoadModule php5_module "C:/Server/bin/PHP/php5apache2_2.dll"

В папке C:\Server\bin\PHP\ найти файл php.ini-development
переименовать его в php.ini

Отредактировать php.ini

; extension_dir = "ext"
на
extension_dir = "C:\Server\bin\PHP\ext\"

Найти группу строк:

;extension=php_bz2.dll
;extension=php_curl.dll
;extension=php_fileinfo.dll
;extension=php_gd2.dll
;extension=php_gettext.dll
;extension=php_gmp.dll
;extension=php_intl.dll
;extension=php_imap.dll
;extension=php_interbase.dll
;extension=php_ldap.dll
;extension=php_mbstring.dll
;extension=php_exif.dll ; Must be after mbstring as it depends on it
;extension=php_mysql.dll
;extension=php_mysqli.dll
;extension=php_oci8.dll ; Use with Oracle 10gR2 Instant Client
;extension=php_oci8_11g.dll ; Use with Oracle 11gR2 Instant Client
;extension=php_openssl.dll
;extension=php_pdo_firebird.dll
;extension=php_pdo_mysql.dll
;extension=php_pdo_oci.dll
;extension=php_pdo_odbc.dll
;extension=php_pdo_pgsql.dll
;extension=php_pdo_sqlite.dll
;extension=php_pgsql.dll
;extension=php_pspell.dll
;extension=php_shmop.dll

Заменить на:

extension=php_bz2.dll
extension=php_curl.dll
extension=php_fileinfo.dll
extension=php_gd2.dll
extension=php_gettext.dll
;extension=php_gmp.dll
;extension=php_intl.dll
;extension=php_imap.dll
;extension=php_interbase.dll
;extension=php_ldap.dll
extension=php_mbstring.dll
extension=php_exif.dll ; Must be after mbstring as it depends on it
extension=php_mysql.dll
extension=php_mysqli.dll
;extension=php_oci8.dll ; Use with Oracle 10gR2 Instant Client
;extension=php_oci8_11g.dll ; Use with Oracle 11gR2 Instant Client
extension=php_openssl.dll
;extension=php_pdo_firebird.dll
extension=php_pdo_mysql.dll
;extension=php_pdo_oci.dll
;extension=php_pdo_odbc.dll
;extension=php_pdo_pgsql.dll
extension=php_pdo_sqlite.dll
;extension=php_pgsql.dll
;extension=php_pspell.dll
;extension=php_shmop.dll

Раскомментировать строки из этой группы:

;extension=php_soap.dll
;extension=php_sockets.dll
;extension=php_sqlite3.dll
;extension=php_sybase_ct.dll
;extension=php_tidy.dll
;extension=php_xmlrpc.dll
;extension=php_xsl.dll
;extension=php_zip.dll

Должно быть:

extension=php_soap.dll
extension=php_sockets.dll
extension=php_sqlite3.dll
;extension=php_sybase_ct.dll
;extension=php_tidy.dll
extension=php_xmlrpc.dll
extension=php_xsl.dll
;extension=php_zip.dll

Перезапустить веб-сервер.

В каталоге C:\Server\data\htdocs\
создать файл с названием i.php

Добавить в i.php :

<?php
phpinfo ();

В браузере открыть http://localhost/i.php
Если PHP работает, увидите информационные данные!

===[ Установка MySQL в Windows XP

Скачать MySQL версии 5.5
https://cdn.mysql.com//Downloads/MySQL- ... -win32.zip

Распаковать в C:\Server\bin
Переименовать в mysql5.5

Создать в папке mysql5.5 файл my.ini

Добавить в my.ini :

[mysql]
default-character-set=utf8

[mysqld]
datadir="c:/Server/data/DB/data/"

Сохранить и закрыть.

Перенести папку C:\Server\bin\mysql5.5\data\
в C:\Server\data\DB\

В командной строке Windows, выполнить две команды:
C:\Server\bin\mysql5.5\bin\mysqld --install
net start mysql

===[ Установка phpMyAdmin

Четвёртая phpMyAdmin требует PHP 5.5 или выше
у нас PHP 5.4, скачиваем версию из ветки 3.*: https://files.phpmyadmin.net/phpMyAdmin ... guages.zip

Распаковать в C:\Server\data\htdocs\
C:\Server\data\htdocs\phpmyadmin

Переименовать phpMyAdmin-3.5.8.2-all-languages в phpmyadmin

В каталоге C:\Server\data\htdocs\phpmyadmin\
C:\Server\data\htdocs\phpmyadmin
создать файл config.inc.php
и добавить:

<?php

/* Servers configuration */
$i = 0;

/* Server: localhost [1] */
$i++;
$cfg['Servers'][$i]['verbose'] = '';
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['port'] = '';
$cfg['Servers'][$i]['socket'] = '';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = '';
$cfg['Servers'][$i]['nopassword'] = true;
$cfg['Servers'][$i]['AllowNoPassword'] = true;

/* End of servers configuration */

$cfg['blowfish_secret'] = 'kjLGJ8g;Hj3mlHy+Gd~FE3mN{gIATs^1lX+T=KVYv{ubK*U0V';
$cfg['DefaultLang'] = 'ru';
$cfg['ServerDefault'] = 1;
$cfg['UploadDir'] = '';
$cfg['SaveDir'] = '';

?>

В браузере открыть: http://localhost/phpmyadmin
Если работает - увидите информационную панель.

Оригинальный туториал:
https://apache-windows.ru/%D1%83%D1%81% ... indows-xp/

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

Сервер я установил, но возникла ошибка при запуске MySQL.
В туториале весьма смутно описано, хотя с первого раза у меня удалось понять и перенести верно. Сейчас подзабыл. В общем нужно, чтобы так было см. рисунок
 Развернуть: Перенести папку
Изображение


Теперь, когда всё готово. Я выкладываю CrazyChat, но он не будет использоваться
как чат. Он будет использоваться в виде тренажера. Вы увидите как происходит процесс.
В пакете помимо программы той, которую я выкладвал первоночально. Есть и ещё консольная. С помощью нею можно создать иллюзию будто кто-то есть. Также, она может выполнить команду по удалению файла сообщений.
 Развернуть: Вот так это смотрится
Изображение


Теперь PHP-скрипт. Его, нужно класть в папку сервера htdocs, разберётесь с ним.
 Развернуть: index.php
Код: Выделить всё
<?php
//
// Этот файл, нужно класть в папку сервера: htdocs
//
$CMD = 'MAGICSTRING'; // Волшебное слово или пароль.
$MESSAGE = 'message';
$FILENAME = 'file';

if (isset($_POST[$CMD], $_POST[$MESSAGE], $_FILES[$FILENAME]))
{
   // Работа при запросе с параметрами.

   $filename = $_FILES[$FILENAME]['name'];

   $command = $_POST[$CMD];
   if (!strcasecmp($command, '!Delete')) // Команда, удаление?
   {
      // Удаление файла.
      
      if (file_exists($filename))
      {
         if (unlink($filename))
            echo 'Remove ' . $filename;
         else
            echo 'Could not remove ' . $filename;
      }
      else
         echo "Missing file.";
      return;
   }
   else if (!strcasecmp($command, '!AddMsg'))
   {
      // Добавление сообщения.
      
      $str = $_POST[$MESSAGE];
      $stream = fopen($filename, 'a+');
      fwrite($stream, $str);
      fclose($stream);
   }
   else if (!strcasecmp($command, '!GetMsg'))
   {
      // Отправка сообщений.
      // Всех сразу. Махом. Если файл имеется.
      // Если нет. Скажет - Отсутствует файл.

      if (file_exists($filename))
         echo readfile($filename);
      else
         echo "Missing file.";
      return;
   }
   else if (!strcasecmp($command, '!GetSize'))
   {
      if (file_exists($filename))
         echo $filename . ': ' . filesize($filename) . ' bytes';
      else
         echo "Missing file.";
      return;
   }
   else
   {
      if (strlen($command))
         echo 'Unknown command: ' . $command;
      return;
   }
   echo 'OK!';

} else
{
   // Работа при запросе без параметров.

   // Вывод картинки. Всё.
   echo '<html><center><img src="katze.jpg" /></center></html>';
}

?>

Файл index.php также приложен в одном пакете.

Теперь. Сам CrazyChat, полезен тем, что из него можно почерпнуть, следующее:
установка, настройка и сохранения цвета, шрифтов, звука;
создания контролов уаправления с нуля;
вы увидите, что на любой контрол Windows можно установить дополнительный
контрол; всё в Windows - это окно! :)
Затем, это всё на чистом API (Application Program[ming] Interface), что значит,
используя средства, одной лишь, операционной системы!

Дальше. Дальше про CrazyChat - забыть, как и говорил, всё будет заново.
Я установил себе Visual Studio 9.0 (2008 года).
Она, на ВирусТотал проходит. Ну и не только из-за этого.
Для новой программы понадобятся функции т.к. при работе с регулярными выражениями - это чтобы не мучиться и парсить текст просто не изнывая,
как при использовании старинных методов. И вообще можно запутаться и пожалеть, что стал программистом. Да, такое бывает.
Следующее сообщение будет в новом топике, а пока прикладываю файлы.

P.S. Больше ничего интересного говорить не буду. Мне нужно было поставить точку с CrazyChat, что я и сделал.
Вложения
Crazy.zip
(163.63 Кб) Скачиваний: 147
Последний раз редактировалось luzga 19 фев 2026, 13:00, всего редактировалось 1 раз.
Аватара пользователя
luzga
Мастер Даунгрейда
 
Сообщения: 307
Зарегистрирован: 04 сен 2025, 19:35

Re: CrazyChat - дружеский чат

Сообщение luzga » 24 фев 2026, 19:38

Я взял за основу дизайн от Borland C++ 5.2 В этой среде разработке, есть пример.
Так вот оболочка, моей программы, оттуда.
Из некоторых ньюансов. Прогресс и индикацию в информационной панели т.е StatusBar, взят здесь.
Также. Я сделал неразрывную связь. Пока программа работает, соединение не обрывается - это называеися режим Keep-Alive.
Прежняя программа CrazyChat, была не такой. Она подключалась время от времени. Возможно в этом и была ошибка?
Последний раз редактировалось luzga 01 мар 2026, 19:00, всего редактировалось 4 раз(а).
Аватара пользователя
luzga
Мастер Даунгрейда
 
Сообщения: 307
Зарегистрирован: 04 сен 2025, 19:35

MateChat - дружеский чат

Сообщение luzga » 01 мар 2026, 18:29

Все, прежние версии, программы Чат - неправильны.
Последний раз редактировалось luzga 09 мар 2026, 10:12, всего редактировалось 9 раз(а).
Аватара пользователя
luzga
Мастер Даунгрейда
 
Сообщения: 307
Зарегистрирован: 04 сен 2025, 19:35

Re: CrazyChat - дружеский чат

Сообщение Superbip20 » 02 мар 2026, 09:18

luzga, спасибо, проверила. Но всё-равно вылетает, только когда выделяешь длинный текст.
976.PNG
976.PNG (55.5 Кб) Просмотров: 21998

В коде всё-таки косяк, кстати.
Фанатка Puyo Puyo (с 2024 г.), Mr. Driller (с 2025 г.), ретро и художница.

Мой пол: Женский
Аватара пользователя
Superbip20
Мастер Даунгрейда
 
Сообщения: 557
Зарегистрирован: 31 окт 2025, 13:57
Откуда: Возле Барнаула, Алтайский край
Железо: Мой новый Lenovo под Windows 10, виртуальные машины 86box и VirtualBox, моя Nintendo Switch

Re: CrazyChat - дружеский чат

Сообщение luzga » 02 мар 2026, 09:50

Superbip20 писал(а):В коде всё-таки косяк, кстати.

Несомненно. Иначе, программа работала, без ошибок.

Буду устранять. Терпение и труд, что? Вот, то-то и оно.
Зато. Теперь есть закуток, где можно напечатать сообщение и оно никуда не денется!
Позже, возможно, сделаю для телефона и Линукс.

P.S. Также. Нужно пробовать, и это - обязательно, работу в защищенном режиме HTTPS/SSL. Byet.host поддерживает эту возможность.
Последний раз редактировалось luzga 02 мар 2026, 10:49, всего редактировалось 2 раз(а).
Аватара пользователя
luzga
Мастер Даунгрейда
 
Сообщения: 307
Зарегистрирован: 04 сен 2025, 19:35

Re: CrazyChat - дружеский чат

Сообщение luzga » 08 мар 2026, 19:24

Как работает программа?
Программа начинает работу с просьбой, ввода имени.
За это, отвечает модуль (файл) ChatSetup.cpp

Загружаются настроики из файла ini, за это отвечает модуль
MateChat.cpp, в нём две функции: LoadConfig() и SaveConfig().
После этого, идём в модуль MainFrm.cpp:
- включаем таймер, интервал одна секунда;
через секунду, запускается функция Getmsg - это класс с выносом в
отдельный поток, работа в фоне - модуль Getmsg.cpp
Если подключение с Интернет есть, то произойдёт подключение.
Если сообщения есть, то они загрузятся. Если, никто, ничего не
написал, естественно - ничего не будет видно.

После первого запуска, удачен ли он был или нет, класс Getmsg
переключает таймер на интервал более редкий - тридцать секунд.
Это значит, что каждые тридцать секунд, Getmsg, будет пробовать
подключиться к сети и получить сообщения.

Куда подключется программа и откуда берёт текст сообщений?
Подключается на бесплатный хостинг Byet Host, а именно участок
(сайт), который создал я. Имя ему Труха, если быть точным см.
в файле Getmsg.cpp
В программе, все данные для работы со скриптом, за исключением,
команды для удаления файла сообщений.

Для сборки программы, нужна Visual Studio 6.0 (1998 год выпуска).
Нужен DirectX Sdk, для звука, если не хотите возиться со звуком
(нужно загружать DXSdk):
- закомментируйте в файле Beep.cpp, директиву #define DIRECTX
// #define DIRECTX
Библиотеку DirectX можно загрузить здесь:
http://old-dos.ru/index.php?page=files& ... ow&id=2629
После установки DirectX. В свойствах проекта, добавьте пути
Include и Library. Зависимость библиотек, три файла добавьте:
winmm.lib dsound.lib dxguid.lib
См. картинки :
 Развернуть: Preprocessor
Изображение
и
 Развернуть: Link Input
Изображение

как, это выглядит у меня, при установленном DXSdk, по пути C:\Devel\DXSdk

Можно ли, собрать программу чем то, выше VC 6? Можно, я собирал VC 9 (2008),
но исходняк не выкладывал.
Многое переделывать придётся, потом, сами по себе - современные, среды разработки, монстрообразны, по несколько гигабайт размером. Мне это не подходит.
Последний раз редактировалось luzga 10 мар 2026, 09:50, всего редактировалось 7 раз(а).
Аватара пользователя
luzga
Мастер Даунгрейда
 
Сообщения: 307
Зарегистрирован: 04 сен 2025, 19:35

Re: CrazyChat - дружеский чат

Сообщение luzga » 09 мар 2026, 10:14

Изображение
Загружен 19.03.2026
Вложения
MateChat.zip
(119.43 Кб) Скачиваний: 123
Последний раз редактировалось luzga 19 мар 2026, 05:11, всего редактировалось 9 раз(а).
Аватара пользователя
luzga
Мастер Даунгрейда
 
Сообщения: 307
Зарегистрирован: 04 сен 2025, 19:35

Re: CrazyChat - дружеский чат

Сообщение Superbip20 » 09 мар 2026, 14:08

luzga, этот чат тоже работает, спасибо.
Фанатка Puyo Puyo (с 2024 г.), Mr. Driller (с 2025 г.), ретро и художница.

Мой пол: Женский
Аватара пользователя
Superbip20
Мастер Даунгрейда
 
Сообщения: 557
Зарегистрирован: 31 окт 2025, 13:57
Откуда: Возле Барнаула, Алтайский край
Железо: Мой новый Lenovo под Windows 10, виртуальные машины 86box и VirtualBox, моя Nintendo Switch

Re: CrazyChat - дружеский чат

Сообщение luzga » 09 мар 2026, 14:44

Superbip20, пожалуйста.
Последний раз редактировалось luzga 10 мар 2026, 12:49, всего редактировалось 1 раз.
Аватара пользователя
luzga
Мастер Даунгрейда
 
Сообщения: 307
Зарегистрирован: 04 сен 2025, 19:35

Re: CrazyChat - дружеский чат

Сообщение Superbip20 » 09 мар 2026, 15:10

luzga, а у меня почему-то требует выбрать имя из букв. Это конечно-же как, хотя я написала свой никнейм англ. буквами.
994.PNG
994.PNG (22.52 Кб) Просмотров: 21761

И что это, кстати означает?
luzga писал(а):Но, сейчас, в Семерке Лайф - это, которая из оперативной памяти запускается, а не с жесткого диска, вылетел снова.

У меня тоже самое с песочницы Sandboxie, только почему-то опять-же такой-же вылет. Хотя в других играх или программах, всё норм:
995.PNG

Криворукость, в общем забесивает. :roll:
Последний раз редактировалось Superbip20 09 мар 2026, 15:18, всего редактировалось 1 раз.
Фанатка Puyo Puyo (с 2024 г.), Mr. Driller (с 2025 г.), ретро и художница.

Мой пол: Женский
Аватара пользователя
Superbip20
Мастер Даунгрейда
 
Сообщения: 557
Зарегистрирован: 31 окт 2025, 13:57
Откуда: Возле Барнаула, Алтайский край
Железо: Мой новый Lenovo под Windows 10, виртуальные машины 86box и VirtualBox, моя Nintendo Switch

Re: CrazyChat - дружеский чат

Сообщение luzga » 09 мар 2026, 15:14

Superbip20, у Вас, в никнейме, цифра присутствует. Из-за этого.
В файле ChatSetup.cpp, происходит эта проверка.
 Развернуть: Фрагмент кода
Код: Выделить всё

// Забор из поля ввода EditBox в переменную svBuff
GetDlgItemText(hWnd,IDC_ED_HANDLE,svBuff,16);
      
// Присвоить адрес строки переменной d
// и проверить каждый символ
// Как видно, допустимы, только A-z и А-я
for (char* d=svBuff; *d!=0; ++d)
      {
         if ((*d>='a'&&*d<='z')||(*d>='A'&&*d<='Z')||
            (*d>='а'&&*d<='я')||(*d>='А'&&*d<='Я'))
            continue;
         else
         {
            MessageBox(hWnd,
               "Пожалуйста. Выберите имя, из букв!",
               "Необходимое требование",
               MB_OK|MB_ICONWARNING|MB_SETFOREGROUND|MB_SYSTEMMODAL);
            SetFocus(GetDlgItem(hWnd,IDC_ED_HANDLE));
            return FALSE;
         }
      }


Superbip20 писал(а):У меня тоже самое с песочницы Sandboxie

Это не криворукость. Это нужно, скорее всего приаттачивать т.е. класть
в ресурсы программы Манифест. Это такая штука, где декларируются права.
Без него, ОС - современная, блокирут многое.
Те, программы, точнее одна из них, была собрана в более современном
компиляторе, а именно 2008. Поэтому, она работала устойчевее.
В XP, работает нормально!
Последний раз редактировалось luzga 09 мар 2026, 15:25, всего редактировалось 5 раз(а).
Аватара пользователя
luzga
Мастер Даунгрейда
 
Сообщения: 307
Зарегистрирован: 04 сен 2025, 19:35

Re: CrazyChat - дружеский чат

Сообщение Superbip20 » 09 мар 2026, 15:19

luzga писал(а):Superbip20, у Вас, в никнейме, цифра присутствует. Из-за этого.
В файле ChatSetup.cpp, происходит эта проверка.
 Развернуть: Фрагмент кода
Код: Выделить всё

// Забор из поля ввода EditBox в переменную svBuff
GetDlgItemText(hWnd,IDC_ED_HANDLE,svBuff,16);
      
// Присвоить адрес строки переменной d
// и проверить каждый символ
// Как видно, допустимы, только A-z и А-я
for (char* d=svBuff; *d!=0; ++d)
      {
         if ((*d>='a'&&*d<='z')||(*d>='A'&&*d<='Z')||
            (*d>='а'&&*d<='я')||(*d>='А'&&*d<='Я'))
            continue;
         else
         {
            MessageBox(hWnd,
               "Пожалуйста. Выберите имя, из букв!",
               "Необходимое требование",
               MB_OK|MB_ICONWARNING|MB_SETFOREGROUND|MB_SYSTEMMODAL);
            SetFocus(GetDlgItem(hWnd,IDC_ED_HANDLE));
            return FALSE;
         }
      }

А, спасибо.
Фанатка Puyo Puyo (с 2024 г.), Mr. Driller (с 2025 г.), ретро и художница.

Мой пол: Женский
Аватара пользователя
Superbip20
Мастер Даунгрейда
 
Сообщения: 557
Зарегистрирован: 31 окт 2025, 13:57
Откуда: Возле Барнаула, Алтайский край
Железо: Мой новый Lenovo под Windows 10, виртуальные машины 86box и VirtualBox, моя Nintendo Switch

Re: CrazyChat - дружеский чат

Сообщение luzga » 09 мар 2026, 19:06

Все-таки не зря, на работу, после сорока устроиться проблематично.
Я ошибки пропускаю, как Мат - Детский
Смотрите сами. В функции Recv - я не проверял результат ею
возвращаемый ! Это, только сейчас, я добавил проверку !
 Развернуть:
Изображение

Вот и валилась, как подкошенная. Я, почему то так решил, а почему?
Не могу сказать. Наверное, как художники говорят: - глаз замылился.
Нет, конечно, просто не молод уже, вот и результат. Пропустил.
А сколько их ещё? Вот и оно.
Функцию, я изменил также, вот она:
 Развернуть: Recv.cpp
Код: Выделить всё
int Recv(SOCKET s, CString& strResponse)
{
   BYTE Buffer[MAXRECVDATASIZE];
   char svBuff[256];

   strResponse.Empty();
   strResponse.GetBuffer(MAXRECVDATASIZE);

   BOOL Result = 0;
   int Count = 0;
   int StatBytesReceived = 0;
   int SelectStatus = 0;

   int WaitTime = 0;
   TIMEVAL SelectTime = {WaitTime, 0};

   fd_set SocketSet;
   FD_ZERO(&SocketSet);
   FD_SET(s, &SocketSet);

   for(;;)
   {
      SelectStatus = select(s + 1, &SocketSet, 0, 0, &SelectTime);
      if (SOCKET_ERROR == SelectStatus)
      {
         wsprintf(svBuff,"Failed Recv checking socket status: %d", WSAGetLastError());
         FatalError(svBuff);
         Result = -1;
         break;
      }
      else
      if (0 == SelectStatus)
      {
         if (SOCKET_ERROR == WSAGetLastError())
         {
            wsprintf(svBuff,"Failed Recv checking socket status: %d", WSAGetLastError() );
            FatalError(svBuff);
            Result = -2;
         }
         break;
      }

      Count = recv(s, (char*)Buffer, ARRAY_COUNT(Buffer)-1, 0);
      if (SOCKET_ERROR == Count)
      {
         if ( WSAEWOULDBLOCK == WSAGetLastError() )
         {
            // Принимающая сторона не успевает читать данные.
            wsprintf(svBuff, "Failed Recv operation could not be: %d", WSAGetLastError() );
            FatalError(svBuff);
            Result = -3;
            break;
         }
         else
         if (WSAECONNRESET != WSAGetLastError())
         {
            // ICMP недоступен, должен продолжать вызывать recv().
            wsprintf(svBuff, "Failed Recv ICMP unreachable: %d", WSAGetLastError() );
            FatalError(svBuff);
            Result = -4;
            break;
         }
      }
      else
      if (Count > 0)
      {
         StatBytesReceived   += Count;
         Buffer[Count]      = 0;
         strResponse += CString(Buffer);
         Sleep(20);
      }
      else
         break;
   }

   if (StatBytesReceived > 0)
   {
      wsprintf(svBuff, "Received %i bytes", StatBytesReceived);
   }
   return StatBytesReceived;
}

Функция, была BOOL стала int.

P.S. Я сделал изменения. И ещё. Я убрал проверку на ввод цифр.
Теперь, Superbip20, может печатать свой ник!
Перекачайте, архив выше ^^^
Последний раз редактировалось luzga 09 мар 2026, 19:35, всего редактировалось 4 раз(а).
Аватара пользователя
luzga
Мастер Даунгрейда
 
Сообщения: 307
Зарегистрирован: 04 сен 2025, 19:35

Re: CrazyChat - дружеский чат

Сообщение Superbip20 » 09 мар 2026, 21:24

luzga писал(а):P.S. Я сделал изменения. И ещё. Я убрал проверку на ввод цифр.
Теперь, Superbip20, может печатать свой ник!
Перекачайте, архив выше ^^^

Спасибо.
Фанатка Puyo Puyo (с 2024 г.), Mr. Driller (с 2025 г.), ретро и художница.

Мой пол: Женский
Аватара пользователя
Superbip20
Мастер Даунгрейда
 
Сообщения: 557
Зарегистрирован: 31 окт 2025, 13:57
Откуда: Возле Барнаула, Алтайский край
Железо: Мой новый Lenovo под Windows 10, виртуальные машины 86box и VirtualBox, моя Nintendo Switch

Re: CrazyChat - дружеский чат

Сообщение luzga » 10 мар 2026, 06:12

В общем, пока, нужно остановится, а то я запарился. :lol:
Последний раз редактировалось luzga 10 мар 2026, 19:29, всего редактировалось 6 раз(а).
Аватара пользователя
luzga
Мастер Даунгрейда
 
Сообщения: 307
Зарегистрирован: 04 сен 2025, 19:35

Пред.След.

Вернуться в Интернет, сети и связь

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7