Diskuze: Komunikace pomocí rour - windows
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 7 zpráv z 7.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
No, ve smyčce na serveru napřed zavoláš ReadFile a jeho výsledek uložíš do proměnné fSuccess... no a pak máš podmínku, která je splněna, když fSuccess je TRUE (ReadFile uspěla). A následkem je, že napíšeš, že nelze číst z roury, zavřeš k ní handle a ukončíš program. Což asi nechceš.
Jinak, pokud není co z roury načíst, ReadFile bude blokující; bude čekat, dokud požadovaný počet bajtů nepřiteče.
No, upravil jsem to na:
while (true)
{
//čtení pm od klienta
DWORD bytes;
fSuccess = ReadFile(
hKalkulator,
buffer,
sizeof(buffer),
&bytes,
NULL);
if (!fSuccess)
{
printf("\n%s\n", buffer);
}
}
a pomocí debugu, jsem si to odkrokoval.. pošlu písmeno, písmeno se
uloží do bufferu, ten se vytiskne a mělo by to teda čekat na další data,
jenže se while ještě jednou projede, vypíše klikyháky a pak teprve čeká
na další data.
Takže výstup je pak vypsané písméno a pod tím čínské znaky a to nevím, kde se tam bere..
V rámci jednoho volání zapisuješ (sizeof(buffer) + 1)*sizeof(TCHAR) bajtů. V rámci jednoho čtení čteš sizeof(buffer) bajtů. Což s sebou nese několik problémů:
Díky, nechápu, že mi to nedošlo už dřív... jsem to ale vůl
Nemyslím... minimálně u mě platí taková přímá úměra: čím déle nějakou chybu hledám, tím větší blbost to je .
Zobrazeno 7 zpráv z 7.