» »

Delo z omrezjem v linuxu

Delo z omrezjem v linuxu

epic21 ::

Kaj bi mi lahko kdo prosim pomagal pri enem problemu:

Napišite program telnet, ki vse kar prebere iz standardnega vhoda pošlje na strežnik, vse kar strežnik odgovori pa izpiše na standardni izhod. Ime strežnika in vrata se podajo kot argument ukazne vrstice. Poenostavitev: predpostavite lahko, da v zanki najprej berete iz standardnega vhoda, pišete na strežnik, berete s strežnika in izpišete na zaslon. Za pisanje in branje s strežnika uporabite funkciji send in recv.

Primer uporabe:

$. /mojtelnet www. Google. Com 80

8-O
Hvala vsem ki mi odgovarjate!!!
  • polepsalo: OwcA ()

64202 ::

Ce se gre za C, potem preberi tole:
Beej's Guide to Network Programming

V npr. perlu je pa to trivialno (skoraj ena vrstica :)).

epic21 ::

Ja to je v c-ju ja!

Ja to sem ze gledal pa mi ni blo ravno jasno kako bi to naredil, pa nevem zakaj? >:D

:(
Hvala vsem ki mi odgovarjate!!!

Zgodovina sprememb…

  • polepsal: Predator ()

CCfly ::

Kaj praviš če bi se malo potrudil in tole domačo nalogo naredil sam ? Naredi dva programčka, enega ki posluša na socketu in vse kar prejme izpiše, drugega pa ki spiše na socket vse iz standardnega vhoda in stvar je rešena.
"My goodness, we forgot generics!" -- Danny Kalev

epic21 ::

Ja saj bi samo problem je če ne znaš, pa se že celi tedn trudiš!!!
Hvala vsem ki mi odgovarjate!!!

CCfly ::

Kaj si dosedaj naredil in kje se ti je zataknilo ?
"My goodness, we forgot generics!" -- Danny Kalev

epic21 ::

Tukaj so knjiznice
int main(int argc, char** argv) {

 struct sockaddr_in my_addr;
    
    int serversocket = socket(AF_INET, SOCK_STREAM, 0); /* do some error checking! */
    int nread;
    int stevilo;
    my_addr.sin_family = AF_INET;     /* host byte order */
    my_addr.sin_port = htons(atoi(argv[1])); /* short, network byte order */
    my_addr.sin_addr.s_addr = inet_addr("0.0.0.0");
    bzero(&(my_addr.sin_zero), 8);    /* zero the rest of the struct */
    
    /* don't forget your error checking for bind(): */
    if (bind(serversocket, (struct sockaddr *)&my_addr, sizeof(struct sockaddr))==-1) {
      perror("Cannot bind");
    }
    listen(serversocket, 10);

    while (1) {
	
        struct sockaddr client_addr;
	socklen_t size = sizeof(client_addr);
        int clientfd = accept(serversocket, &client_addr, &size);

	// tukaj more biti nekaj takega!
	while (nvrite = read(0, buf, 512)) > 0)
	{
		send (socketfd, buf, st, 0);
		stevilo = recv (socketfd, buf, 512, 0);
		write (1, buf, nvrite);
	}
	close(clientfd);

   }
   return 0;
}


Tukaj je moja koda pa nevem kaj je narobe :'( ;(
Hvala vsem ki mi odgovarjate!!!

Zgodovina sprememb…

  • spremenilo: CCfly ()

CCfly ::

Oprosti ampak lenoba si. Tole ni delo enega tedna temveč 15 minut brskanja po internetnih straneh in copy/paste rutine. Če bi imel vsaj ščepec volje bi takoj videl svojo zmoto (kako si predstavljaš da boš poslušal na socketu in hkrati v isti funkciji/istem procesu/isti niti tudi pošiljal podatke na ta isti socket). Prvi del kode gre v server, drugi del kode pa v odjemalca.

Poglej si tole poglavje v že prilepljeni povezavi in imitiraj:
http://www.ecst.csuchico.edu/~beej/guide/net/html/clientserver.html
Naj ti namignem, da tvoja naloga zahteva precej manj od kode.
"My goodness, we forgot generics!" -- Danny Kalev

rabbit-zek ::

Se strinjam z CCfly
Life sucks in many ways!

BigWhale ::

Pa se mi zdi, da serverja niti ne rabi programirati...

CCfly ::

V bistvu res ne samo recimo z netcatom mora biti priklopljen na ustrezen port.
"My goodness, we forgot generics!" -- Danny Kalev

Zgodovina sprememb…

  • spremenilo: CCfly ()


Vredno ogleda ...

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

[c] ne sprejme UDP paketa

Oddelek: Programiranje
7989 (577) slovencl
»

[C++] bind

Oddelek: Programiranje
61456 (1234) fiction
»

SMTP v c -ju

Oddelek: Programiranje
282128 (1269) BigWhale
»

C: connect() funkcija, kako nastaviti timeout

Oddelek: Programiranje
231782 (1563) fefko-the-bulldog
»

Casovni problem v C/C++

Oddelek: Programiranje
91258 (1159) sid_dabster

Več podobnih tem