» »

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
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.

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)
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.

Gundolf ::

Kaj v ANSI Cju ni ukaza getch / cget / getc / v tem stilu, ki bi direkt prebral en znak?

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.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[NALOGA][Java] Branje vsebine datoteke vzvratno

Oddelek: Programiranje
71538 (1480) SkIDiver
»

[c++] dvosmerno povezan seznam

Oddelek: Programiranje
122470 (2306) upirna
»

[C#] unmanaged->managed code

Oddelek: Programiranje
112073 (1948) Zzzzzzz
»

[c++] Kako ugotoviti katera tipka je bila pritisnjena

Oddelek: Programiranje
141438 (1210) 64202
»

Linux, C, kaj uporabiti namesto getchar da ne bo čakal na input?

Oddelek: Programiranje
141338 (1178) user4683

Več podobnih tem