Search
 
 
  Engleski
 
 
 
Open in this window (click to change)
Forum@DeGiorgi: Početna
Forum za podršku nastavi na PMF-MO
Login Registracija FAQ Smajlići Članstvo Pretražnik Forum@DeGiorgi: Početna

Mreže računala - Slanje strukture putem socketa

Moja sarma
 
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji siročići (oni koji nemaju svoj podforum) -> Računarski kolegiji
Prethodna tema :: Sljedeća tema  
Autor/ica Poruka
marsupial
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 09. 01. 2012. (22:46:33)
Postovi: (63)16
Spol: kućni ljubimac
Sarma = la pohva - posuda
= 5 - 1

PostPostano: 13:04 ned, 19. 11. 2017    Naslov: Mreže računala - Slanje strukture putem socketa Citirajte i odgovorite

Zanima me da li je netko rješavao i da li je ovo uopće dobar način slanja strukture preko socketa? Da li postoji neki efikasniji?

[code:1]

struct student{
char* ime;
int broj_kolegija; // predstavlja duljinu nizova nazivi_kolegija i ocjene
char** nazivi_kolegija;
int* ocjene;
};

void raspakiraj(void *student1)
{
student *student1=(student *) student1;
char* ime1 = student1->ime;
int broj_kolegija1 = student1->broj_kolegija;
char** nazivi_kolegija1 = student1->nazivi_kolegija;
int* ocjene1 = student1->ocjene;
int len_naziva_kolegija=broj_kolegija1 - strlen(ocjene1);
}

int posaljiString( int sock, char *ime )
{
int duljinaImena = strlen( ime );
int poslano, poslanoZadnje;
int duljinaImena_n = htonl( duljinaImena );
poslanoZadnje = send( sock, &duljinaImena_n, sizeof( duljinaImena_n ), 0 );
if( poslanoZadnje != sizeof( duljinaImena_n ) ) return NIJEOK;

poslano = 0;
while( poslano != duljinaImena )
{
poslanoZadnje = send( sock, ime + poslano, duljinaImena - poslano, 0 );

if( poslanoZadnje == -1 || poslanoZadnje == 0 ) return NIJEOK;
poslano += poslanoZadnje;
}

return OK;
}


int posaljiOcjene( int sock, int *ocjene )
{
int duljinaOcjene = strlen( ocjene );
int poslano, poslanoZadnje;
int duljinaOcjene_n = htonl( duljinaOcjene );
poslanoZadnje = send( sock, &duljinaOcjene_n, sizeof( duljinaOcjene_n ), 0 );
if( poslanoZadnje != sizeof( duljinaOcjene_n ) ) return NIJEOK;

poslano = 0;
while( poslano != duljinaOcjene )
{
poslanoZadnje = send( sock, ocjene + poslano, duljinaOcjene - poslano, 0 );

if( poslanoZadnje == -1 || poslanoZadnje == 0 ) return NIJEOK;
poslano += poslanoZadnje;
}

return OK;
}

int posaljiBroj( int sock, int broj )
{
int poslanoZadnje;

int broj_n = htonl( broj );
poslanoZadnje = send( sock, &broj_n, sizeof( broj_n ), 0 );
if( poslanoZadnje != sizeof( broj_n ) ) return NIJEOK;

return OK;
}

int posalji_nazive_kolegija(int sock, const char** str, int length){
if( posaljiBroj(sock, length) == OK ){
for(int i = 0; i < length && posalji_string(sock, str[i]); ++i);
}

RETURN NIJEOK;
}

int posalji (int sock, struct student S)
{
raspakiraj(S);

while(OK)
{
posalji_string(sock, ime1);

posaljiBroj(sock, broj_kolegija1);

posalji_nazive_kolegija(sock, nazivi_kolegija1, len_naziva_kolegija);

posaljiOcjene(sock, ocjene1);

return OK;

}

return NIJEOK;

}
[/code:1]
Zanima me da li je netko rješavao i da li je ovo uopće dobar način slanja strukture preko socketa? Da li postoji neki efikasniji?

Kod:


struct student{
char* ime;
int broj_kolegija; // predstavlja duljinu nizova nazivi_kolegija i ocjene
char** nazivi_kolegija;
int* ocjene;
};

void raspakiraj(void *student1)
{
   student *student1=(student *) student1;
   char* ime1 = student1->ime;
   int broj_kolegija1 = student1->broj_kolegija;
   char** nazivi_kolegija1 = student1->nazivi_kolegija;
   int* ocjene1 = student1->ocjene;
   int len_naziva_kolegija=broj_kolegija1 - strlen(ocjene1);
}

int posaljiString( int sock, char *ime )
{
   int duljinaImena = strlen( ime );
   int poslano, poslanoZadnje;
   int duljinaImena_n = htonl( duljinaImena );
   poslanoZadnje = send( sock, &duljinaImena_n, sizeof( duljinaImena_n ), 0 );
   if( poslanoZadnje != sizeof( duljinaImena_n ) ) return NIJEOK;

   poslano = 0;
   while( poslano != duljinaImena )
   {
      poslanoZadnje = send( sock, ime + poslano, duljinaImena - poslano, 0 );

      if( poslanoZadnje == -1 || poslanoZadnje == 0 ) return NIJEOK;
      poslano += poslanoZadnje;
   }

   return OK;
}


int posaljiOcjene( int sock, int *ocjene )
{
   int duljinaOcjene = strlen( ocjene );
   int poslano, poslanoZadnje;
   int duljinaOcjene_n = htonl( duljinaOcjene );
   poslanoZadnje = send( sock, &duljinaOcjene_n, sizeof( duljinaOcjene_n ), 0 );
   if( poslanoZadnje != sizeof( duljinaOcjene_n ) ) return NIJEOK;

   poslano = 0;
   while( poslano != duljinaOcjene )
   {
      poslanoZadnje = send( sock, ocjene + poslano, duljinaOcjene - poslano, 0 );

      if( poslanoZadnje == -1 || poslanoZadnje == 0 ) return NIJEOK;
      poslano += poslanoZadnje;
   }

   return OK;
}

int posaljiBroj( int sock, int broj )
{
   int poslanoZadnje;

   int broj_n = htonl( broj );
   poslanoZadnje = send( sock, &broj_n, sizeof( broj_n ), 0 );
   if( poslanoZadnje != sizeof( broj_n ) ) return NIJEOK;

   return OK;
}

int posalji_nazive_kolegija(int sock, const char** str, int length){
  if( posaljiBroj(sock, length) == OK ){
    for(int i = 0; i < length && posalji_string(sock, str[i]); ++i);
  }

   RETURN NIJEOK;
}

int posalji (int sock, struct student S)
{
   raspakiraj(S);
   
   while(OK)
   {
      posalji_string(sock, ime1);

      posaljiBroj(sock, broj_kolegija1);

      posalji_nazive_kolegija(sock, nazivi_kolegija1, len_naziva_kolegija);

      posaljiOcjene(sock, ocjene1);
   
      return OK;

   }

   return NIJEOK;

}


[Vrh]
Korisnički profil Pošaljite privatnu poruku
Prethodni postovi:   
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji siročići (oni koji nemaju svoj podforum) -> Računarski kolegiji Vremenska zona: GMT + 01:00.
Stranica 1 / 1.

 
Forum(o)Bir:  
Ne možete otvarati nove teme.
Ne možete odgovarati na postove.
Ne možete uređivati Vaše postove.
Ne možete izbrisati Vaše postove.
Ne možete glasovati u anketama.
You cannot attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2002 phpBB Group
Theme created by Vjacheslav Trushkin
HR (Cro) by Ančica Sečan