Forskjell mellom versjoner av «FAQ Hjemmeeksamen 2»

Fra mn/ifi/INF1060
Hopp til: navigasjon, søk
(Meldings-ID; lokal eller global?)
(Hvordan fanger jeg signalet fra CTRL-C?)
 
Linje 28: Linje 28:
  
 
== Hvordan fanger jeg signalet fra CTRL-C? ==
 
== Hvordan fanger jeg signalet fra CTRL-C? ==
se man signal
+
se "man signal" i terminalen.
  
 
== Hva er en ACK, og når skal det brukes? ==
 
== Hva er en ACK, og når skal det brukes? ==

Nåværende revisjon fra 13. nov. 2010 kl. 05:18

Må jeg gjøre alt fra hjemmeeksamen 1 i innleveringen av hjemmeeksamen 2?

Nei, det er ikke nødvendig. Det eneste som er nødvendig å gjøre i hjemmeeksamen 2 er det som er spesifisert i oppgaveteksten for hjemmeeksamen 2.

Prompt og innlesning

Her kan du sannsynligvis bruke mye av koden fra hjemmeeksamen 1, så lenge det er i henhold til oppgaveteksten i hjemmeeksamen 2.

Datastruktur for lagring av meldinger

Hva slags struktur du bruker for å lagre meldingene er opp til deg. Hvis koden fra hjemmeeksamen 1 fungerte kan du bruke den, hvis ikke må du gjerne lage en enklere løsning.

I hjemmeeksamen 2 er det ikke nødvendig å:

  • ha ett kontinuerlig minne for dataene
  • bruke bitmap eller bytemap
  • dele opp meldingene i datablokker

Det blir altså ikke gitt ekstrapoeng for slike løsninger.

SMS-serveren skal kunne håndtere flere innkommende meldinger samt multiple telefoner

Serveren skal kunne håndtere flere tilkoblinger på en gang; den skal altså kunne lytte på alle socketer og håndtere data som kommer fra klientene.


Kan dere fortelle mer om Select()?

Sjekk siden for FAQ Nettverksprogrammering, se ellers man select i terminalen. Sjekk også Beej's guide to network programming.

Hvordan fanger jeg signalet fra CTRL-C?

se "man signal" i terminalen.

Hva er en ACK, og når skal det brukes?

ACK er en kortversjon av ACKnowledge og betyr bekreftelse. Når en melding sendes, skal det sendes en ACK-melding tilbake som bekrefter at denne (unike) meldingen har blitt mottatt. Både server og klient (mobil) skal sende ACK på meldinger som mottas.

Applikasjonslagsprotokoll, hva er det?

I hjemmeeksamen 2 skal data sendes via et nettverk ved hjelp av TCP/IP, mellom klienter (mobil) og en server. TCP er en pålitelig protokoll som garanterer at dataene som sendes kommer fram på andre siden i eksakt samme form og rekkefølge. TCP kan dog ikke fortelle programmet ditt hva dataene betyr; det er bare bits. Derfor er det nødvendig med en applikasjonslagsprotokoll som definerer rammene rundt hva dataene som kommer på socketen faktisk betyr. Denne protokollen skal forklares og begrunnes i rapporten, så enkelt og konkret som mulig.

Skal jeg teste på en egen server, og hvordan gjøres det?

Det fungerer fint å kjøre både klient (mobil) og server på den lokale maskinen, men det kan være greit å teste serveren på en av Ifi-serverne. Logg inn på login-maskinene slik: ssh login.ifi.uio.no og kjør server-programmet ditt derfra.

Sende en melding til flere mobiler?

Kommandoen send skal kunne sende en melding til flere telefonnumre.

send 1555 11111111 22222222 33333333 

skal sende melding (ID 1555) til de tre numrene 11111111, 22222222 og 33333333.

En enkel løsning vil være å sende meldingene tre ganger, med tre ulike destinasjons-telefonnumre. Dette er en løsning som vil noe poeng. En løsning som gir full uttelling er hvis man bruker multicast. Det vil si at meldingen sendes en gang til serveren, og serveren videresender meldingen til de telefonene som er oppført i "TO-feltet".

Ubegrenset kø-lengden på serveren, må jeg da skrive til disk hvis minnet er fullt?

Når det i oppgaven beskrives at en løsning som gir ubegrenset antall meldinger i køen gir mer poeng, refererer det til implementasjonen, dvs. at løsningen ikke har en begrensning, med f.eks. et array på N plasser. Det er ikke nødvendig å skrive meldinger til disk hvis minnet er fullt.