Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem C++ vstup/výstup v jedné konzoli zároveň

Pěkný večer.
Potřeboval bych, aby aplikace (linuxová) komunikující se serverem vypisovala data, co server pošle a zároveň mohl uživatel zadávat příkazy a po stisknutí enteru odeslat. V podstatě stejně jako třeba telnet. Běžnou funkci pro vstup std::cin nemůžu použít, protože je blokující. Než by uživatel stiskl enter, program by nic nevypisoval. Napadlo mě, že bych proces forknul a původní proces by data vypisoval a potomek by četl ze stdin a odesílal. Přístup k socketu by měli samozřejmě přes nějaký mutex. Ale jde o tu konzoli. Co jsem zatím našel, tak od toho lidi odrazují. Že se to pak celé může chovat nepředvídatelně atp. Jaký by tedy byl vhodný způsob?

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
konzola na toto neni stavana, ptz keby si pisal a sucasne vypisoval server, tak by ti to predsa mies…
MM.. 20.04.2014 12:26
MM..
keby si pisal a sucasne vypisoval server, tak by ti to predsa miesalo pismena z jedneho aj z druheho… poslední
Niko Bellic 20.04.2014 18:01
Niko Bellic

konzola na toto neni stavana, ptz keby si pisal a sucasne vypisoval server, tak by ti to predsa miesalo pismena z jedneho aj z druheho. Neviem jak linux konzola, nema to nejake kbhit() ze by si testoval ci bola stlacena klavesa pred volanim getch() ?
Normalne je ale konzolu robit tak jak ked rozpravas s niekym vysielackou, hovori jeden, potom povie "prijem" (= enter) a prepne sa smer a hovori druhy az po dalsi "prijem (enter) apod a tak na striedacku :)
Ak to ma byt simultanne tak asi by bolo lepsie urobit program s GUI s dvomi podoknami (jedno in a druhe out). Ale nepoznam linux konzolu takze konkrente na linux neporadim.

keby si pisal a sucasne vypisoval server, tak by ti to predsa miesalo pismena z jedneho aj z druheho

To by tolik nevadilo. Hlavně jestli by funkce cin nevzala pak celý obsah konzole, který vznikl před stiskem enteru. Měla by vzít jen to, co bylo skutečně napsáno na klávesnici. Aplikakce je jen pro účely testování (finální klient bude GUI, ale v požadavcích je udělat i čistě konzolového klienta).

Zpět do poradny Odpovědět na původní otázku Nahoru