Просмотр полной версии : примеры работы с пайпами на делфи
supernewbie
03.06.2011, 23:39
если у кого есть примеры работы с пайпами на делфи, киньте их сюды
желательно чтобы была синхронизация между клиентом и сервером, ну т.е. пока сервак не считал данные, посылающий поток не резумился, ну короче вы понели)
destructor
03.06.2011, 23:42
http://www.google.ru/search?client=opera&rls=ru&q=%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B+%D1%8 0%D0%B0%D0%B1%D0%BE%D1%82%D1%8B+%D1%81+%D0%BF%D0%B 0%D0%B9%D0%BF%D0%B0%D0%BC%D0%B8+%D0%BD%D0%B0+%D0%B 4%D0%B5%D0%BB%D1%84%D0%B8&sourceid=opera&ie=utf-8&oe=utf-8&channel=suggest
третья или четвертая ссыль, помоему оно
забил я на эту штуку - там рабочий пример передачи трафика из клинта ло2 в экзешник пайпами )
supernewbie
04.06.2011, 08:37
забил я на эту штуку - там рабочий пример передачи трафика из клинта ло2 в экзешник пайпами )
блин, там дллка не принимает данные вроде да, ну щас попробую также как в сервере, в цикле реад делать
supernewbie
04.06.2011, 09:15
пля, посмотрите хуле он виснет когда Send у клиента вызываю
добавлено через хз скока там чего
да что за гавно!(
supernewbie
04.06.2011, 15:35
работает тока асинхронка, ему ваще пох, флудит сендами на бедный сервак! че сделать чтобы эта шняга суспендилась пока серв не обработает)
Добавлено через 5 часов 45 минут
пля, обнаружил ещё какую-то загадучную хрень, главный поток не резумится если засуспендить его
работает тока асинхронка, ему ваще пох, флудит сендами на бедный сервак! че сделать чтобы эта шняга суспендилась пока серв не обработает)
Добавлено через 5 часов 45 минут
пля, обнаружил ещё какую-то загадучную хрень, главный поток не резумится если засуспендить его
используй че нить для синхронизации, тот же мютекс или симофор
supernewbie
04.06.2011, 18:20
я ваще так подумал, проще будет при отправке суспендить поток, а резумить тока по ответу от сервера, но блин, поток не резумится, крт. секции не робят, мутекс не робит, ваще хрень какая-то)
procedure TPipeClient.Answer;
begin
ReleaseMutex(hMutex);
end;
procedure TPipeClient.Send(buf:string);
var
rc:boolean;
begin
//if not FConnected then exit;
rc:=WriteFile (hPipe, pointer(buf)^, Length(buf), bytesWritten, @OverLapWrt);
if not rc then
if GetLastError = ERROR_IO_PENDING then
WaitForSingleObject (hEventWrt, INFINITE)
else FConnected:=false;
hMutex:=CreateMutex(nil, true, 'SendMutex');
if GetLastError = ERROR_ALREADY_EXISTS then
WaitForSingleObject (hMutex, INFINITE);
end;
это это не робит, ему пох! он нече не ждет никакие мюьтексы!
Добавлено через 1 час 12 минут
пасаны, че я не так делаю)
Добавлено через 12 минут
ыы, семафор робит))
пасаны, че я не так делаю)живёшь)
supernewbie
04.06.2011, 21:52
о_о
как жезка
Добавлено через 39 минут
пля короче это какой-то херовый способ синхрона, если клиент и сервер одновременно пошлют мессаджи друг другу то оба будут ждать друг от друга ответов, и вот я хз..
Добавлено через 6 минут
короче хз, при быстром обмене месаджами происходит висяк(
destructor
04.06.2011, 22:50
поток не резумится, крт. секции не робят, мутекс не робиткрокодил не ловится, не растет кокос.
supernewbie
04.06.2011, 23:38
короче идет какой-то адовый асинхрон...
Добавлено через 12 минут
убрал свой семафор, перестало вроде... но блин, как же синхронизировать ввод и вывод в этих пайпах
короче идет какой-то адовый асинхрон...
Добавлено через 12 минут
убрал свой семафор, перестало вроде... но блин, как же синхронизировать ввод и вывод в этих пайпах
по симофору на каждого?
supernewbie
05.06.2011, 00:43
у каждого клиента свой симофор, ну да
но все равно может как-то дико взять повиснуть
короче попалите уже, я задолбался в конец(
destructor
05.06.2011, 03:23
можно вопрос:
нафига ваще понадобились "обьекты синхронизации"?
supernewbie
05.06.2011, 14:21
ну вот я передаю пакет скажем да, и после того как я передал, бот должен там подумать все дела, и сказать, убивать этот пакет или нет, так то.
и пока он не сказал - никуда пакет не девать!
как ты ваще в эксте пакеты убиваешь?
alexteam
05.06.2011, 14:39
убивать все, а отправку нужных оставить на совести бота ?
supernewbie
05.06.2011, 14:48
не, не катит) а если надо выборочно убивать пакет, а если скрипт должен убивать пакет, не(
Добавлено через 4 минуты
ну придумайте че-нить(
тест.rar
объект заражен Virus.Win32.Induc.a (http://www.interface.ru/home.asp?artId=21572)
supernewbie
05.06.2011, 15:03
фак мой мозг
объект заражен Virus.Win32.Induc.a (http://www.interface.ru/home.asp?artId=21572)
хе, хренька которая заражает делфи )
supernewbie
05.06.2011, 15:59
блин короче семафор не подходит, у меня ведь там не разные потоки, по идее надо просто засуспендить поток после отправки, запомнить его и резумнуть его после прихода ответа от серва
Добавлено через 23 минуты
вот че я пишу
hTh:=GetCurrentThread;
SuspendThread(hTh);
а потом, при ответе от серва
ResumeThread(hTh);
и нече не резумится(
supernewbie, у меня есть простенькая прога (лаба дла универа) на сях, работа с пайпами. Дать?
supernewbie
05.06.2011, 16:25
блин, если там есть то о чём я грю то давай, а то у всех пайпы не ждут ответа от серва
Добавлено через 18 минут
пля
hTh:cardinal;
procedure Test;
begin
hTh:=GetCurrentThread;
SuspendThread(GetCurrentThread);
MessageBox(0, 'Resumed', '', 0);
end;
procedure TForm1.FormCreate(Sender: TObject);
var
c:Cardinal;
begin
CreateThread(nil, 0, @Test, nil, 0, c);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ResumeThread(hTh);
end;
почему жму на кнопку и нет месаджа?
блин, если там есть то о чём я грю то давай, а то у всех пайпы не ждут ответа от серва
Клиент-серверное приложение работы с БД. Может поможет. laba2.rar (http://rapid.ufanet.ru/3236992)
Доки еще есть.
так может и ерундит из-за этой хреньки, которая заражает дельфи?
supernewbie
05.06.2011, 18:11
усё, настроил кажись)
PS эта хренька безвредна, вроде
vBulletin® v3.6.11, Copyright ©2000-2024, Jelsoft Enterprises Ltd. Перевод: zCarot