Форум программистов, компьютерный форум, киберфорум
C++: WinAPI
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
31 / 31 / 23
Регистрация: 23.03.2015
Сообщений: 210
1

Чат, хотелось бы услышать критику опытных людей

25.08.2015, 22:33. Просмотров 1228. Ответов 5
Метки нет (Все метки)

Сделал простенький чат, хотелось бы услышать критику опытных людей.
0
Вложения
Тип файла: rar Simple_Chat_Client.rar (7.29 Мб, 43 просмотров)
Тип файла: rar Simple_Chat_Server.rar (8.11 Мб, 46 просмотров)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.08.2015, 22:33
Ответы с готовыми решениями:

Тестовое задание от работадателя. Хотелось бы услышать критику.
Пробую устроиться программистом. Вот одна из компаний выслала мне тестовое задание следующего...

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

Хочу услышать мнения опытных людей по SEO 2018-2019 года
Вопрос назрел потому, что я уже как полгода запустил сайт, перечитал кучу статей про SЕО , которые...

Можно услышать критику
Я верстал шапку сайта, это моя первая такая работа. http://white.net76.net/ Покритикуйте,...

5
56 / 54 / 33
Регистрация: 05.11.2014
Сообщений: 259
27.08.2015, 00:03 2
Лучший ответ Сообщение было отмечено 0x0152 как решение

Решение

Зачем это?
C++
1
2
3
    LoadLibrary(TEXT("ComCtl32.dll"));
    LoadLibrary(TEXT("Riched32.dll"));
    LoadLibrary("COMCTL32");
Почему не подключаешь нормально через lib-файл? Директива:
C++
1
#pragma comment(lib, "COMCTL32.LIB")
Добавлено через 9 минут
И, я думаю, было бы лучше реализовать и клиент и сервер в одной программе, а функцию менять кнопкой на форме. Устройство в принципе у них одинаковое, всего лишь нужно переопределять некоторые функции.
1
31 / 31 / 23
Регистрация: 23.03.2015
Сообщений: 210
27.08.2015, 00:29  [ТС] 3
Цитата Сообщение от PavelPol Посмотреть сообщение
Зачем это?
Код C++Выделить код
1
2
3
* * LoadLibrary(TEXT("ComCtl32.dll"));
* * LoadLibrary(TEXT("Riched32.dll"));
* * LoadLibrary("COMCTL32");
Почему не подключаешь нормально через lib-файл? Директива:
Код C++Выделить код
1
#pragma comment(lib, "COMCTL32.LIB")
Забыл стереть.

Цитата Сообщение от PavelPol Посмотреть сообщение
И, я думаю, было бы лучше реализовать и клиент и сервер в одной программе, а функцию менять кнопкой на форме. Устройство в принципе у них одинаковое, всего лишь нужно переопределять некоторые функции.
0
56 / 54 / 33
Регистрация: 05.11.2014
Сообщений: 259
27.08.2015, 08:31 4
Лучший ответ Сообщение было отмечено 0x0152 как решение

Решение

Когда-то давно написал "движок" для работы с сетью в виде DLL. У меня там при инициализации как сервера создавался массив для клиентских сокетов. Функции по работе с сетью были установлены в неблокирующий режим, то есть функция не ждет пока появится новый клиент или будут получены/отправлены данные. Будешь делать версию 2.0 - сделай мультичат с такими изменениями, чтобы сервер раздавал сообщения всем подключенным клиентам.
Вариант с отдельным потоком в таком случае будет сложнее. Хотя можно и так реализовать.
1
46 / 35 / 24
Регистрация: 16.03.2015
Сообщений: 179
27.08.2015, 15:30 5
Лучший ответ Сообщение было отмечено 0x0152 как решение

Решение

0x0152, как мой кореш (царство небесное, Серёня; говорил: "Всё - Ровно"), действительно "Ровно" ! 0x0152, но, (лучше) возможно кодируйте в Unicode ( по-многим причинам... ), естественно, мне понятно, что вы слегка Огород нагородили, из-за Сетевых функций. Однако, на мой взгляд, лучше конвертировать этим и отправлять, например, фрагмент (не имеет значение, просто пример любой функции, требующей Байты, т.е. Чар):
C++
1
2
/* Преобразовать IP-адрес в числовое значение. */
Address = inet_addr( TcharToANSI( Buffer ) );
Далее, сама функция - конвертер:
TcharToANSI

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
char* TcharToANSI( const TCHAR* Str )
{
    HGLOBAL GlobalMem;
    int Count = WideCharToMultiByte(CP_ACP,0,Str,-1,NULL,0,NULL,NULL);
    GlobalMem = GlobalAlloc(GMEM_DDESHARE|GMEM_MOVEABLE,Count+1);
    if (GlobalMem == NULL) return NULL;
 
    char* Data = (char*)GlobalLock(GlobalMem);
    WideCharToMultiByte(CP_ACP,0,Str,-1,Data,Count,NULL,NULL);
    Data[Count] = 0;
    GlobalUnlock(GlobalMem);
    return Data;
}

* Также, советую, ознакомиться с этим: Как отдать "приказ" на другой компьютер
1
31 / 31 / 23
Регистрация: 23.03.2015
Сообщений: 210
27.08.2015, 19:09  [ТС] 6
Shvonder,
PavelPol,
Спасибо за советы .
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.08.2015, 19:09

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Хочу услышать мнение опытных программистов
Не так давно увидел тему на форуме https://www.cyberforum.ru/cpp-beginners/thread2565005.html. Сам...

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

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

Хотелось бы услышать Ваше мнение о блоках питания FAST
что скажете о БП FAST F450-120B ATX 450W? Соответствует ли цена и качество? Производитель


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.