Forum » Programiranje » LINUX c in pogovor(dopisovanje) preko interneta
LINUX c in pogovor(dopisovanje) preko interneta
hasek ::
Ok napisal sem program za pogovor(v linux konzoli) 2 uporabnikov preko neta
vse dela lepo in prav samo 1 problem je ko recimo 1 uporabnik pise nekaj v konzolo in drugi med tem poslje nekaj njemu se mu v vrsitici zgoraj vse izpise in tisto kar mu je drugi poslal in seveda tudi tisto kar je sam pisal.
primer :
user1: pise..........pise
user2: poslje : kako si ?
prvemu uporabniku se bo izpisalo tako :pise..........pise kako si ?
Kako bi se lahko tega resil ? program pa je pisan v ANSI C
vse dela lepo in prav samo 1 problem je ko recimo 1 uporabnik pise nekaj v konzolo in drugi med tem poslje nekaj njemu se mu v vrsitici zgoraj vse izpise in tisto kar mu je drugi poslal in seveda tudi tisto kar je sam pisal.
primer :
user1: pise..........pise
user2: poslje : kako si ?
prvemu uporabniku se bo izpisalo tako :pise..........pise kako si ?
Kako bi se lahko tega resil ? program pa je pisan v ANSI C
there is no hope for you
64202 ::
V ansi c-ju ne mores nic pametnega naresti glede izpisa. Moras uporabiti kaj sistemsko odvisnega, recimo ncurses.
I am NaN, I am a free man!
Zgodovina sprememb…
- spremenilo: 64202 ()
Gundolf ::
Ne vem če bi tole res delovalo ampak taka rešitev na hitro je, da preden izpišeš kar ti je nekdo poslal izpišeš še '\r' (carriage return - ti postavi kurzor na začetek vrstice in ti potem prepiše vse kar je že napisanega v vrstici). Za pošiljateljevim sporočilom še izpišeš primerno število presledkov (dolžina uporabnikovega sporočila - dolžina pošiljateljevega sporočila) in greš v novo vrstico. V novi vrstici pa še enkrat izpišeš celo uporabnikovo sporočilo. Bo pa to zahtevalo, da bereš po en znak iz input streama in si sproti pomniš sporočilo.
Zna pa izgledat precej kavbojsko. Res raje uporabi kakšne ncurses.
Zna pa izgledat precej kavbojsko. Res raje uporabi kakšne ncurses.
64202 ::
> Bo pa to zahtevalo, da bereš po en znak iz input streama in si sproti pomniš sporočilo.
Po en znak ne mores brati, vsaj v ansi c-ju ne. (cev se flushne sele ob entru)
Po en znak ne mores brati, vsaj v ansi c-ju ne. (cev se flushne sele ob entru)
I am NaN, I am a free man!
Zgodovina sprememb…
- spremenilo: 64202 ()
OwcA ::
Če si pripravljen sprejeti občasne zamike pri dostavljanju sporočil, lahko sporočilo shraniš in ga izpišeš, ko prejemnik neha tipkati. Malo neugodno bo za uporabnike, ker bodo morali pred vsakim sporočilom odtipkati nek ukaz, ki bo naznanil začetek pisanja. Še vedno se lahko pojavijo navzkrižja, ampak jih je precej manj. Dejansko le, kadar sporočilo prispe tik preden ti odtipkaš ukaz za začetek pisanja.
Otroška radovednost - gonilo napredka.
64202 ::
Je, samo se buffer od sistema ne flushne, dokler ne stisnes enter. Je pa mozno, da je kaka ansi c funkcija, ki to izklopi, samo iz glave ne vem.
I am NaN, I am a free man!
Gundolf ::
Ja valda, razumem. Nič ne pride mimo input bufferja in ni funkcije za škiljenje v buffer. V bistvu zelo zanimivo.
Nič hasek, potem bo pa treba knjižnico uporabit.
Nič hasek, potem bo pa treba knjižnico uporabit.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [NALOGA][Java] Branje vsebine datoteke vzvratnoOddelek: Programiranje | 1604 (1546) | SkIDiver |
» | [c++] dvosmerno povezan seznamOddelek: Programiranje | 2554 (2390) | upirna |
» | [C#] unmanaged->managed codeOddelek: Programiranje | 2139 (2014) | Zzzzzzz |
» | [c++] Kako ugotoviti katera tipka je bila pritisnjenaOddelek: Programiranje | 1477 (1249) | 64202 |
» | Linux, C, kaj uporabiti namesto getchar da ne bo čakal na input?Oddelek: Programiranje | 1396 (1236) | user4683 |