12. oktober 2007 - 18:32Der er
32 kommentarer og 1 løsning
Idéer til C++ program til 3-månedersopgave
Kære Eksperter!
På min skole skal vi lave en opgave, som varer tre måneder. Jeg skal fremlægge mit emne om 3 uger (mener jeg).
Jeg går i 10. klasse og har programmeret i ca. 5 år. Først HTML og JavaScript, og siden har jeg læst enormt mange bøger (og ofte skrevet et par småprogrammer for at eksperimentere med de pågældende sprog) om C++/C, Visual Basic, ASP, PHP, SQL, og Fortran (cool, de der whole-array operationer, ikke:) ).
Efter at have læst alt dette mener jeg stadig at C++ (og C) er de(t) "reneste" sprog der findes - man kan både skrive operativsystemer, programmer o.s.v og så er det lavet på en universal måde, så man kan bruge det på enormt mange måder til enormt mange ting.
Opgaven skal indeholde en teoretisk og praktisk opgave. Jeg har overvejet at skrive om programmering som teoretisk opgave, og som praktisk lave et program. Det skal ikke være noget enormt stort projekt, gerne bare et lille program der kan være praktisk at have/bruge.
Jeg har tænkt mig at skrive det i C++. Jeg har stor teoretisk viden om dette sprog, men har ikke lavet ret meget praktisk. Lidt, men ikke meget. D.v.s at jeg kan forstå hvad der sker når jeg ser på koden til et program, men ikke selv lave det (I hvertfald ikke lige så elegant og hurtigt).
Jeg efterlyser ikke et program der ligger i taskbaren og tæller antal cm. man har bevæget musen, men heller ikke noget meget avanceret. Jeg har jo kun tre måneder.
Jeg regner med at det der primært vil være besværligt for mig er at finde ud af hvilke funktoner der skal bruges hvor.. Altså ikke sproget, men implementationen.
Jeg har tænkt mig at lave det i windows forms, f.eks. via WxWidgets. Det kunne være lidt fedt at lave det 100% cross-platform. Og hvis jeg benytter mig af STL og gratis open-source libraries til specifikke ting, skulle det da ikke være helt umuligt?
Jeg giver de 80 point til den eller dem der kommer med det forslag jeg vælger, eller inspirerer mig til et.
Bemærk at jeg endnu ikke er 100% sikker på at det ovennævnte er det jeg vil lave i opgaven.
Jeg tror også det vil være svært at undgå at genopfinde den dybe talleren, der findes jo mange småprogrammer derude!
Da jeg laver/spiller musik meget må det gerne have noget med det at gøre, men det er intet krav, bare en mulighed.
Joh, men wxWidgets er også 100% Cross-platform, og wxWidgets emulerer _ikke_ det native GUI som Qt og f.eks. Java gør. Derudover er der jo også meget simple og brugbare socketklassesr og lign. i wxWidgets. Derudover ER Qt jo kommercielt, selvom jeg ikke regner med at sælge det program jeg kommer til at lave..
Men ellers en god ide med chatprogrammet, da jeg næsten tror den CD-db vil være for meget på 3 mdr..
Så er det vel noget med at have en klient og server i hver ende og evt. en server med static ip som klienterne kan koble op på og checke hvilken ip deres kontakter har hvorefter de laver en direkte tilslutning til deres kontakter?
Ja du kan lave det som server og client, men hvis du ikke har så meget tid kan du bare lave en server og en client, hvor kun to personer kan chatte. Hvis du skal lave den forkromede løsning med ip på kontakter osv på serveren. skal du nok ud i noget database.
oddi-> Grunden til at jeg mente at der _skulle_ være en server som mellemled var, at ellers havde klienterne ikke noget fælles referencepunkt hvor de kunne finde den andens ip. Og ja, så skal jeg nok ud i noget database, men hvis det gøres så simpelt som muligt så det nærmest kun er ip'en der gemmes kan jeg sagtens lave det i PHP eller ASP.. tror jeg..
Arne-> Det har du nok ret i... Men jeg kan jo vælge at basere mit arbejde på en simpel gpl chatklient, selvom det ville være at snyde lidt.. WxWidgets har faktisk også en simpel client/server applikation med som demoprojekt.. Men hvis jeg nu lavede en CDDB, ville det så ikke være en god idé at gemme DB'en i xml? Eller er det for tungt ved større DB'er?
Du kan godt klare dig med 1 instans af .exe pr. "client" Den ene skal dog være server som clienten kan connecte til.
1. Server starter, på en bestemt port > 1023 (find ip for server) 2. Server venter på connects 3. Clienten connecter til server (via ip fra server samt port) 4. Hvis alt går godt kan server og client "chatte"
Dette er et udgangspunkt i et MEGET simpelt chat program.
Jeg har læst beej's guide, den er enormt god. Men der fulgte et lille client-server demoprogram med min wxwidgets-distribution, og det viser meget detaljeret hvordan man bruger de platformsuafhængige WxSockets, så det tror jeg jeg vil basere arbejdet på..
For at det bliver i det mindste lidt smart, burde .exe'n jo være en hybrid mellem en client og server, f.eks.:
1. Exe starter, lytter efter clienter på en port. 2. [Anden computer] Exe starter, connecter til den 1.ste computers ip. 3. 1.ste computer opdager den 2. og tilslutter til den 4. 1.ste computer opretter en forbindelse til 2. hvor den 1.ste er client, så man kan chatte begge veje.
Men så kommer man jo alligevel ud i noget multitasking??
-så jeg mener at programmet skal fungere som server og lytte på en port så snart man starter den, men at der skal være mulighed for at tilslutte til en anden server som client.
Hmm.. nej det er klart at den kun skulle multitaske hvis den skulle listen()e på flere sockets samtidig, aka have flere sessions på samme tid, hvilket jeg ikke kræver.
Så når serveren opdager at en client vil connecte til den accepterer den connection'en og laver en ny socket til clienten, som den så connecter til.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.