On Sat, Oct 23, 1999 at 09:22:57PM +0200, Andrej Lajovic wrote:
> Zivjo!
> 
> Rad bi naredil programchic, ki bi sedel na dolocenem portu in cakal na
> povezavo. Potem, ko bi se nekdo connectal z druge strani, bi na STDOUT
> izpisal vse, kar tisti nekdo tipka, vse, kar bi v tistem casu prislo na
> STDIN bi pa poslal njemu.
> 
> Verjamem, da je tole zelo lahka naloga za tiste, ki so ze domaci v taksnih
> zadevah, meni kot zacetniku pa v temle primeru dela probleme istocasna
> dvostranska komnunikacija, ker ne vem, kako bi istocasno kontroliral STDIN
> in socket.
> 
> Lepo bi prosil nekoga, da mi vsaj nakaze, kako bi to najlaze naredil.
> 
> Lep pozdrav iz 4. nadstropja,
> Andrej
> 
> ---------------------------------------------------------------------
> You can get more of what you want with a kind word and a gun than you
> can with just a kind word.
> 
> 
> 

v ta namen se uporablja funkcija select().

Ker ti kot zacetniku tist "man select" ne bo nic pomagal, bom 
napisal en primercek te uporabe.. za tvoj konkreten primer.

int sock = socket, ki se dobi po accept(). -- ko se client connecta

(pri tem predvidevam da znas brati iz stdina in pisati v/iz sock)

#include <stdio.h>
#include <time.h>

FD_SET rset;

while(1) -- neskoncna zanka
{
  FD_ZERO(&rset);  
  FD_SET(sock, &rset);
  FD_SET(fileno(stdin), &rset);

  select(255, &rset, NULL, NULL, NULL);
  if (FD_ISSET(sock, &rset))
  {
     client na drugi strani je poslal sporocilo..
     ti ga samo preberes in posljes na stdout. -- read() in write()
  }

  if (FD_ISSET(fileno(stdin), &rset))
  {
    nekaj si napisal v stdin.. kar je treba tukaj nardit je da
    posljes prebran message v sock.

    Tale stvar bo bla izvrsena samo takrat ko bos pritisnu enter.. se pravi
    ne za posamezen znak.. Ce hoces to nardit mora biti povezava
    non-blocking.. ampak to je ze druga pesem.. (isto velja za socket .. 
    read() bo vrnu samo takrat ko bo prejel \n.)

  }
}



upam, da ti kej pomaga..

-- 

                ==---------------------------------------==
                      Marko Mlakar - [EMAIL PROTECTED]
                ===-------------------------------------===
                PGP Public key: finger [EMAIL PROTECTED]

PGP signature

Reply via email to