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