|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
20.05.2010, 16:56 | #1 |
Форумчанин
Регистрация: 26.03.2010
Сообщений: 538
|
Поставить CreateThread в нужное место
Добронго времени суток! Когда то написал консольных клиента и сервер. На клиенте было два потока: один считывает сообщение и посылает через сервер другому клиенту, другой принимает сообщения.
Код:
ПАробовал создавать поток при открытии проиложения в функции __fastcall TForm1::TForm1(TComponent* Owner) Код:
Функция, принимающая сообщения: Код:
Единственный способ стать умнее - играть с более умным противником.
|
20.05.2010, 23:04 | #2 |
Форумчанин
Регистрация: 26.03.2010
Сообщений: 538
|
А все разобрался
Единственный способ стать умнее - играть с более умным противником.
|
20.05.2010, 23:17 | #3 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Если разобрался ( и если не сложно) опиши что необходимо сделать.
Вдруг кому пригодится...
I'm learning to live...
|
20.05.2010, 23:33 | #4 |
Форумчанин
Регистрация: 26.03.2010
Сообщений: 538
|
При запуске приложения:
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { //==========При запуске приложения====== version=MAKEWORD(2,0); error = WSAStartup( version, &wsaData ); if ( error != 0 ){ Memo2->Text="Error occured" ; } if ( LOBYTE( wsaData.wVersion ) != 2 || HIBYTE( wsaData.wVersion ) != 0 ) { WSACleanup(); } AnsiString port=Edit2->Text;//====IP адрес сервера=== //=============Создаем сокет================== client = socket( AF_INET, SOCK_STREAM, 0 ); memset( &sins, 0, sizeof(sins) ); sins.sin_family = AF_INET; sins.sin_port = htons(7007); sins.sin_addr.s_addr = inet_addr(port.c_str()); if ( connect( client, (struct sockaddr *)&sins, sizeof(sins) ) == SOCKET_ERROR{ Memo2->Text="could not connect to server"; } else{ Memo2->Text="Connect to server "; } mutex_recv=CreateMutex(NULL,FALSE,N ULL); DWORD result_recv; result_recv=WaitForSingleObject(mut ex_recv,0); if(result_recv==WAIT_OBJECT_0){ RECV=CreateThread(NULL,0,CLIENT_REC V,(void *)&client,0,0); //========Поток принимающий сообщения========== ReleaseMutex(mutex_recv); } } А отправка сообщений происходит по нажатию соответствующей кнопки Код:
Единственный способ стать умнее - играть с более умным противником.
|
20.05.2010, 23:46 | #5 |
Форумчанин
Регистрация: 26.03.2010
Сообщений: 538
|
Теперь если не принимать список пользователей все хорошо.
Проблемы возникают при получении списка пользователей. Ругается на этот кусок кода: Код:
Если все обращения к элементам формы удалить, то же самое. Подскажите пожалуйста в чем ошибка.
Единственный способ стать умнее - играть с более умным противником.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как отключить не нужное оборудование в Windows 7? | taimag | Win Api | 2 | 21.01.2010 22:00 |
Удалить не нужное из ListBox | Shouldercannon | Общие вопросы Delphi | 7 | 20.12.2008 00:07 |
Направь новичка в нужное русло | Walking Cat | Свободное общение | 7 | 07.07.2008 09:09 |
web-browser - АВТОЗАЛОГИНИТЬСЯ и отобразить только нужное | Yuran | Общие вопросы Delphi | 0 | 18.02.2008 14:08 |