Scholieren.com forum

Scholieren.com forum (https://forum.scholieren.com/index.php)
-   Software & Hardware (https://forum.scholieren.com/forumdisplay.php?f=20)
-   -   [c++]controleren of een socket data bevat (https://forum.scholieren.com/showthread.php?t=553361)

Dr HenDre 29-07-2003 17:13

[c++]controleren of een socket data bevat
 
ik ben nu een simpele chat client aan het maken, maar nu heb ik een probleem. ik heb 2 threads, de main voor het ontvangen en een server_send() voor het versturen, die als het goed is prallel aan elkaar draaien. Maar dat is het probleem niet, in main heb ik de volgende code.
PHP-code:

    for( ; ; )
    {
        
nBytesrecv(Chat_Server, (char*)&MessageSizesizeof(MessageSize), 0);

        if (
nBytes==SOCKET_ERROR)
        {
            
cout<<"Ontvangen van bericht mislukt";
        }
        
MessageSize=ntohl(MessageSize);
    
        
nBytes=recv(Chat_ClientbufferMessageSize0);
        if(
nBytes==SOCKET_ERROR)
        {
            
cout<<"Ontvangen van het bericht mislukt!\n";
        }
        
buffer[MessageSize]='\0';
    
        
printf("Bericht ontvangen: %s\n"buffer);
    } 

nu herhaalt ie dit heel snel 8er elkaar. Ik wil eigenlijk hebben dat ie eerst controleert of de socket data bevat. En dan iets in de vorm
if(socket bevat data/is niet leeg)
{
//mn code
}
else
{
sleep(x) ;
continue;
}
dat ie dus controleert of de socket informatie bevat, zoja dan moet ie dat ophalen en afdrukken, zonee moet ie x sec/msec w8en en dan de for loop opnieuw uitvoeren.
Hoe krijg ik dit voor elkaar?

niemand 29-07-2003 17:27

Eindig jij je C++ altijd met een ?> ?

Dr HenDre 29-07-2003 17:29

Citaat:

niemand schreef op 29-07-2003 @ 18:27:
Eindig jij je C++ altijd met een ?> ?
doet de php tag, en ik gebruik die omdat ik van syntax highligthing hou :p

dafelix 29-07-2003 17:31

Citaat:

niemand schreef op 29-07-2003 @ 18:27:
Eindig jij je C++ altijd met een ?> ?
lkkr nuttelooz..


modified code:

Code:

for( ; ; )
    {
        If recv(Chat_Server, (char*)&MessageSize, sizeof(MessageSize), 0) {
        nBytes= recv(Chat_Server, (char*)&MessageSize, sizeof(MessageSize), 0);

        if (nBytes==SOCKET_ERROR)
        {
            cout<<"Ontvangen van bericht mislukt";
        }
        MessageSize=ntohl(MessageSize);
   
        nBytes=recv(Chat_Client, buffer, MessageSize, 0);
        if(nBytes==SOCKET_ERROR)
        {
            cout<<"Ontvangen van het bericht mislukt!\n";
        }
        buffer[MessageSize]='';
   
        printf("Bericht ontvangen: %s\n", buffer);
    }
    pause 2;

werkt zoiets niet gewoon?

niemand 29-07-2003 17:32

Citaat:

Dr HenDre schreef op 29-07-2003 @ 18:29:
doet de php tag, en ik gebruik die omdat ik van syntax highligthing hou :p
Ah ok dan snap ik het.

Dr HenDre 29-07-2003 17:35

Citaat:

dafelix schreef op 29-07-2003 @ 18:31:
werkt zoiets niet gewoon?
K heb nog niet gecompiled omdat het een deel is van een groot script die nog niet af is. Maar je krijgt iig iedere keer dat hij een bericht probeert op te halen een foutmelding of een 0

[edit]
pause 2 :confused:

Dr HenDre 29-07-2003 17:56

hmm, na ik heb nu het volgende gevonden
http://analyser.oli.tudelft.nl/beej/.../advanced.html
daar staat het volgende
Citaat:

select() geeft je de kracht om verscheidene sockets tegelijkertijd in de gaten te houden. Het vertelt je welke klaar zijn om van gelezen te worden, welke klaar zijn om naar te schrijven, en welke sockets uitzonderingen ("exceptions") hebben gegenereerd, als je dat echt wil weten.
Alleen ik snap niet echt wat daar en verder bedoeld wordt. En hoe nou select werkt :(

Screaming Slave 29-07-2003 19:17

maybe threading isn't for you :cool:

Marcade 29-07-2003 20:08

Citaat:

Dr HenDre schreef op 29-07-2003 @ 18:56:
hmm, na ik heb nu het volgende gevonden
http://analyser.oli.tudelft.nl/beej/.../advanced.html
daar staat het volgende


Alleen ik snap niet echt wat daar en verder bedoeld wordt. En hoe nou select werkt :(

Ik heb nooit in C++ gewerkt maar wel met een geporte versie van die winsock ding, in QB.

select zorgt er idd voor dat je kan kijken of er data in bepaalde sockets zit. Dat doe je door de functie een lijst met sockets mee te geven welke die moet controlleren of je er naar kan schrijven, of je eruit kan lezen, of er een error is opgetreden.

Select geeft dan lijsten terug welke sockets idd je naar toe kan schrijven, uit kan lezen en/of een error hebben.

Dr HenDre 30-07-2003 12:28

ik heb het ondertusse gevonden
zo controleer je of de sockets data bevatten.
Code:

int result=select(pollingSet.fd_count, &pollingSet, NULL, NULL, &waitTime);
if(result>0)
{
//code
}


Chimera 30-07-2003 12:51

Is er geen modus waarbij blocking IO gebruikt wordt? ASynch IO sucks IMHO :)

McMotion 30-07-2003 13:10

ik begrijp niet waarvoor je nu die verschillende threads gebruikt... waarom niet 1 helemaal voor de client en 1 helemaal voor de server? in ieder geval niet bij elkaar in de thread.. dan kan je ook gewoon blocking calls gebruiken idd... en als je het toch perse zo wilt gebruik dan select en ga niet constant zitten pollen in een loop.. dat is niet verstandig

Marcade 30-07-2003 15:17

Blocking? Zodat je niks anders kan doen en je programma gewoon vast zit, wachten totdat de select functie time-out of totdat er data binnenkomt? Dat je dus ook niks kan versturen? :/

(of heb ik het nou mis)

Dr HenDre 30-07-2003 15:38

Citaat:

McMotion schreef op 30-07-2003 @ 14:10:
ik begrijp niet waarvoor je nu die verschillende threads gebruikt... waarom niet 1 helemaal voor de client en 1 helemaal voor de server? in ieder geval niet bij elkaar in de thread.. dan kan je ook gewoon blocking calls gebruiken idd... en als je het toch perse zo wilt gebruik dan select en ga niet constant zitten pollen in een loop.. dat is niet verstandig
Als ik apart een server en client hebt kan ik met de server alleen ontvangen en met de clien alleen versturen, ik moet hebbend at ik met 1 prog en kan versturen en ontvangen. een beetje irc-style, maar dan 1 op 1. Maar ik heb het nu opgelost. Er zitten wel een paar andere problemen in maar voor geintereseerden, de source staat op http://members.lycos.nl/hendre/Source.html

McMotion 30-07-2003 23:09

Citaat:

Marcade schreef op 30-07-2003 @ 16:17:
Blocking? Zodat je niks anders kan doen en je programma gewoon vast zit, wachten totdat de select functie time-out of totdat er data binnenkomt? Dat je dus ook niks kan versturen? :/

(of heb ik het nou mis)

eh ja en dan met een andere thread versturen :) die blocking call vraagt geen processortijd, busy waiting wel

McMotion 30-07-2003 23:12

Citaat:

Dr HenDre schreef op 30-07-2003 @ 16:38:
Als ik apart een server en client hebt kan ik met de server alleen ontvangen en met de clien alleen versturen, ik moet hebbend at ik met 1 prog en kan versturen en ontvangen. een beetje irc-style, maar dan 1 op 1. Maar ik heb het nu opgelost. Er zitten wel een paar andere problemen in maar voor geintereseerden, de source staat op http://members.lycos.nl/hendre/Source.html
hoezo? je kan met server sockets toch ook versturen en met een client socket toch ook ontvangen?

trouwens ik wil geen zeikerd zijn hoor maar goto in je code? :eek:

Marcade 31-07-2003 08:41

Citaat:

McMotion schreef op 31-07-2003 @ 00:12:
hoezo? je kan met server sockets toch ook versturen en met een client socket toch ook ontvangen?

trouwens ik wil geen zeikerd zijn hoor maar goto in je code? :eek:

Je hebt een socket nodig om te luisteren voor inkomende connectie requests, en een socket om mee te verbinden; je kan dat niet tegelijkertijd met dezelfde socket doen?

Zodra de verbinding er is, kan je idd. gewoon zenden en ontvangen.

En op zich is er niks mis met Go To, het nodigt alleen uit tot slecht overzichtelijke code, verder niks

Chimera 31-07-2003 08:46

Citaat:

Marcade schreef op 31-07-2003 @ 09:41:
En op zich is er niks mis met Go To, het nodigt alleen uit tot slecht overzichtelijke code, verder niks
Ik raad je aan, als je professioneel C(++) gaat programmeren, geen goto's te gebruiken. Jij mag dan misschien vinden dat er niks mis is met goto, maar je zet jezelf gruwelijk voor schut, en niemand neemt je C kwaliteiten nog erg serieus.

Goto's zijn nooit onmisbaar, en zijn gewoon een gruwelijk lelijke constructie.

Screaming Slave 31-07-2003 10:44

goto == //FIXME :p zo'n beetje

Marcade 31-07-2003 13:42

Citaat:

Chimera schreef op 31-07-2003 @ 09:46:
Ik raad je aan, als je professioneel C(++) gaat programmeren, geen goto's te gebruiken. Jij mag dan misschien vinden dat er niks mis is met goto, maar je zet jezelf gruwelijk voor schut, en niemand neemt je C kwaliteiten nog erg serieus.

Goto's zijn nooit onmisbaar, en zijn gewoon een gruwelijk lelijke constructie.

Dat zeg ik. What's your point? :|

McMotion 31-07-2003 17:16

Citaat:

Marcade schreef op 31-07-2003 @ 09:41:
En op zich is er niks mis met Go To, het nodigt alleen uit tot slecht overzichtelijke code, verder niks
ten eerste vrij onoverzichtelijk, maar als je alleen al dénkt in goto's dan ben je verkeerd bezig als je het mij vraagt.. je kunt het ook allemaal in loops en functies beredeneren dus waarom moeilijk maken als het makkelijk is...

Chimera 01-08-2003 10:19

Citaat:

Marcade schreef op 31-07-2003 @ 14:42:
Dat zeg ik. What's your point? :|
Nee, je zegt dat er niks mis mee is. Er is niks GOEDS aan goto's.

Dr HenDre 01-08-2003 11:12

Citaat:

McMotion schreef op 31-07-2003 @ 18:16:
ten eerste vrij onoverzichtelijk, maar als je alleen al dénkt in goto's dan ben je verkeerd bezig als je het mij vraagt.. je kunt het ook allemaal in loops en functies beredeneren dus waarom moeilijk maken als het makkelijk is...
in loops is idd wat profisioneler, maar jah, dat is weer zoveel typwerk. Je denkt ten slotte in goto. Maar ik weet idd dat het slecht is om gotos te gebruiken, maar dat geeft aan hoe ver ik ben in cpp :p (niet zo ver dus)

niemand 01-08-2003 11:50

Citaat:

Dr HenDre schreef op 01-08-2003 @ 12:12:
in loops is idd wat profisioneler, maar jah, dat is weer zoveel typwerk. Je denkt ten slotte in goto. Maar ik weet idd dat het slecht is om gotos te gebruiken, maar dat geeft aan hoe ver ik ben in cpp :p (niet zo ver dus)
Je moet _nooit_ beginnen met goto. Dit heeft nogal een effect op hoe je altijd blijft coden omdat je gewoon in goto's denkt.
En het is niet wat professioneler. Als ik iets met cpp doe voor een bedrijf dan mag ik het gewoon overnieuw doen als er ook maar 1 goto in zit. Goto's zijn gewoon brak en produceren brakke onoverzichtelijke code.
Ook als je niet ver bent moet je gewoon _geen_ goto gebruiken.

Dr HenDre 01-08-2003 12:12

Citaat:

niemand schreef op 01-08-2003 @ 12:50:
Je moet _nooit_ beginnen met goto. Dit heeft nogal een effect op hoe je altijd blijft coden omdat je gewoon in goto's denkt.
En het is niet wat professioneler. Als ik iets met cpp doe voor een bedrijf dan mag ik het gewoon overnieuw doen als er ook maar 1 goto in zit. Goto's zijn gewoon brak en produceren brakke onoverzichtelijke code.
Ook als je niet ver bent moet je gewoon _geen_ goto gebruiken.

Ok ik zal het vanaf nu veranderen, maar eerst moet ik eens andere problemen zien op te lossen, want op de een of andere manier crasht ie gewoon vanzelf. Ik krijg het volgende
Code:

Welkom bij Dr HenDre-Chat :P
Voer Nick in:  Dr HenDre
Geef op welke poort gebruikt moet worden voor de verbinding om berichten te ontv
angen
Poort 1337 is standaard:        1337
Chat Server Gestart
hier
hier
accepteren geluktChat

_Client gestart
Voer bericht in:        Bericht te groot
OntvangenFout bij het verz van het bericht enden van de groomislukt!
tte!
Fout bij het verzenden van het bericht!
*crash*

negeer die hier maar, dat zijn wat 'breakpoints' voor mezelf, zodat ik weet hoe ver dat prog komt.
Het rare is dat ie aangeeft dat het verstuurde bericht te groot is, terwijl ie de regel
cin.getline(buffer, 200); //bericht invoeren
gewoon of overslaat of negeert of zelf aanvult
Maar goed, dit wordt allemaal een beetje offtopic

Chimera 01-08-2003 12:38

Die buffer, is die wel gealloceerd?

Dr HenDre 01-08-2003 12:52

Citaat:

Chimera schreef op 01-08-2003 @ 13:38:
Die buffer, is die wel gealloceerd?
[schaam]wat is dat, en hoe doe je dat[/schaam]

McMotion 01-08-2003 16:06

wijst buffer naar geldig geheugen? of is het gewoon een pointer die nergens naar wijst... in dat geval... reserveer geheugen :) als dat niet het probleem is.. geef eens aan waar het programma op crasht en wat de foutmelding is

Dr HenDre 01-08-2003 17:36

Citaat:

McMotion schreef op 01-08-2003 @ 17:06:
wijst buffer naar geldig geheugen? of is het gewoon een pointer die nergens naar wijst... in dat geval... reserveer geheugen :) als dat niet het probleem is.. geef eens aan waar het programma op crasht en wat de foutmelding is
hmm, het probleem is, ij het debuggen crash mn prog bij buffer[MessageSize]='\0'; Hiermee wil ik de string die verstuurd is afsluiten. als ik dit weghaal, dat crahs ie niet, maar stuurt de functie server_send() rare tekens, terwijl hij normaal gesproken eerst om een string moet vragen, en die moet versturen. Hij stuurt iets heel raars, en vervolgens worden krijg ik de melding dat het bericht te groot was. Ik heb een maximum ingesteld van 200 chars. Als je iets stuurt dat groter is dan 200 krijg je een foutmelding en worden alle sockets direct gesloten(om te voorkomen dat bufferoverflows worden gebruikt om te exploiten).het gaat om de volgende code die rare tekens genereert.
Code:

void server_send()
{
    server_send_args ssa;
    ssa.poort=1337;
    ssa.hostname="localhost";
        int error;
client_start:
        WSAData wsaData;

        if((error=WSAStartup(MAKEWORD(2,2), &wsaData))==SOCKET_ERROR)
        {
                cout<<"Kan Winsock voor het versturen niet opstarten!\n";
                goto client_start;
        }
   
        int Chat_Client=socket(AF_INET, SOCK_STREAM, 0);
        if(Chat_Client == SOCKET_ERROR)
        {
                cout<<"Kan de socket Chat_Client niet initialisren!\n";
                goto client_start;
        }

    struct hostent *host_entry;
    if((host_entry=gethostbyname(ssa.hostname))==NULL)
    {
        cout<<"Host niet gevonden\n";
    }

        struct sockaddr_in server;
        server.sin_family = AF_INET;
        server.sin_port = htons(ssa.poort);
        server.sin_addr.s_addr= *(unsigned long*) host_entry->h_addr;
    Sleep(1000);
        if(connect(Chat_Client, (sockaddr*)&server, sizeof(server))== SOCKET_ERROR)
        {
                cout<<"Er is een fout opgetreden tijdens het maken van een verbinding\n"
                          "met " <<ssa.hostname <<"\n";
                goto client_start;
        }
        cout<<"Chat_Client gestart\n";
       

        int nBytes;                        //Aantal gelezen/geschrven bytes, ook te gebruiken om errors uit te lezen
        char buffer[max_grootte_bericht];        //buffer aanmaken om berichten in op te slaan
Sleep(5000);
//        for(;;)
//        {
        cout<<"Voer bericht in:\t";
                cin.getline(buffer, 200);                //bericht invoeren
                if(stricmp  (buffer, "quit"))
                {
                        ShutdownSocket(Chat_Client);
                }

                unsigned long MessageSize = strlen(buffer);        //lengte van de string
                MessageSize = htonl(MessageSize);                        //byte-ordening vaststellen
//                buffer[MessageSize]='\n';
                nBytes=send(Chat_Client, (char*)&MessageSize, sizeof(MessageSize), 0);
                if (nBytes==SOCKET_ERROR)
                {
                        cout <<"Fout bij het verzenden van de grootte!\n";
                }

                MessageSize = ntohl(MessageSize);
                nBytes=send(Chat_Client, buffer, MessageSize, 0);
       
                if(nBytes==SOCKET_ERROR)
                {
                        cout<<"Fout bij het verzenden van het bericht!\n";
                }
//        }
        //pthread_exit(NULL);
}

ik heb er een paar dingen er tijdelij uit gehaald(zoals de oneindige for lus die om een invoer vraagt). Maar de code vraagt niet eens om een invoer. zou het misshien aan het volgende kunnen liggen vraag ik me opeens af:
a_thread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)&server_send, NULL, 0, &a_threadId);

Omdat het me niet lukte om bij het maken van de thread 2 argumente mee te geven aan die funtie heb ik er maar NULL van gemaakt, en heb ik een struct genaamd sever_send_args om de data door te geven.

Chimera 01-08-2003 21:11

Citaat:

Dr HenDre schreef op 01-08-2003 @ 18:36:
hmm, het probleem is, ij het debuggen crash mn prog bij buffer[MessageSize]='\0';
Als jij een buffer van 10 groot maakt, loopt je inder van 0-9. Als je index 10 probeert te benaderen, krijg je een access violation. Je moet je buffer 1 groter dan de messagesize maken, anders heb je geen ruimte voor die 0.

Marcade 02-08-2003 08:35

Citaat:

McMotion schreef op 31-07-2003 @ 18:16:
ten eerste vrij onoverzichtelijk, maar als je alleen al dénkt in goto's dan ben je verkeerd bezig als je het mij vraagt.. je kunt het ook allemaal in loops en functies beredeneren dus waarom moeilijk maken als het makkelijk is...
Dat ligt aan de programmeur; niet aan de goto. :S

Dr HenDre 02-08-2003 12:50

Citaat:

Chimera schreef op 01-08-2003 @ 22:11:
Als jij een buffer van 10 groot maakt, loopt je inder van 0-9. Als je index 10 probeert te benaderen, krijg je een access violation. Je moet je buffer 1 groter dan de messagesize maken, anders heb je geen ruimte voor die 0.
Neej, dat is het probleem niet, want mijn buffer is buffer[max_grootte_buffer] en max_grootte_buffer is gedefineerd als 5000. En ik kan max berichten krijgen van 200 bytes/chars. Dus stel ik krijg een stringvan 50 chars dus van buffer[0] tot buffer[49] dan is messagesize 50 dus wordt de string afgesltoen met een \0 (stringzero), op plaats buffer[messagesize]. Toch veroorzaakt die regel een crash, als ik het weghaal wordt er iets raars verzoekt en wordt het programma 'normaal' afgesloten.

Chimera 02-08-2003 14:50

char buffer[max_grootte_bericht];

->

char[] buffer = new char[max_grootte_buffer];

McMotion 02-08-2003 15:03

Citaat:

Marcade schreef op 02-08-2003 @ 09:35:
Dat ligt aan de programmeur; niet aan de goto. :S
ik heb geen flauw idee over welk puntje je nu zanikt maar je hebt gelijk.

McMotion 02-08-2003 15:13

HenDre, post de source eens waar die regel instaat waar het fout gaat.. anders kunnen we moeilijk kijken he.. en ik neem aan dat je een access violation krijgt? of wat anders

Chimera 02-08-2003 15:25

Citaat:

McMotion schreef op 02-08-2003 @ 16:13:
HenDre, post de source eens waar die regel instaat waar het fout gaat.. anders kunnen we moeilijk kijken he.. en ik neem aan dat je een access violation krijgt? of wat anders
Euh, dat heeft 'ie dus al gedaan.

Dr HenDre 02-08-2003 15:41

Citaat:

McMotion schreef op 02-08-2003 @ 16:13:
HenDre, post de source eens waar die regel instaat waar het fout gaat.. anders kunnen we moeilijk kijken he.. en ik neem aan dat je een access violation krijgt? of wat anders
ik krijg nu helemaal geen error, nadat ik de bovengenoemde regel heb weggehaald krijg ik dus geen error meer, maar verstuurd server_send() iets heel vaags. Ik zal de source effe updaten, hij staat dus op http://members.lycos.nl/hendre/Source.html

edit:
ow jah, ik krijg dus GEEN acces violation error, maar een unexpected error waar zelfs de debugger van MSVC++ nix meer kan, hij geeft gewoon unexpected error.

edit2:
source is geupdate, fout is opeens weg, hij kan opeens niet connecten met localhost, terwijl ik niets heb veranderd :confused:
Code:

Welkom :P
Voer Nick in:  henri
Geef op welke poort gebruikt moet worden voor de verbinding om berichten te ontv
angen
Poort 1337 is standaard:        1337
Chat Server Gestart
hier
Hostnaam gevonden
Er is een fout opgetreden tijdens het maken van een verbinding
met localhost

echt vaag allemaal

niemand 02-08-2003 17:48

Citaat:

Dr HenDre schreef op 02-08-2003 @ 16:41:

source is geupdate, fout is opeens weg, hij kan opeens niet connecten met localhost, terwijl ik niets heb veranderd :confused:

boy meets coding :P

Dr HenDre 02-08-2003 17:48

Citaat:

niemand schreef op 02-08-2003 @ 18:48:
boy meets coding :P
:o tja, je moet toch ooit beginnen ;)

Chimera 02-08-2003 17:49

Waaorm begin je niet in Java bijvoorbeeld? Heel erg geschikt om een chatservertje te beginnen, en veel makkelijker als beginnerstaal.

niemand 02-08-2003 17:57

Citaat:

Chimera schreef op 02-08-2003 @ 18:49:
Waaorm begin je niet in Java bijvoorbeeld? Heel erg geschikt om een chatservertje te beginnen, en veel makkelijker als beginnerstaal.
Best een goed idee ja.
PHP kan ook, maar daarin word een interactive client toch al lastig.

Dr HenDre 02-08-2003 17:57

Citaat:

Chimera schreef op 02-08-2003 @ 18:49:
Waaorm begin je niet in Java bijvoorbeeld? Heel erg geschikt om een chatservertje te beginnen, en veel makkelijker als beginnerstaal.
tja, ik ben eenmaal met cpp begonnen, een aantal maanden geleden. En om nou over te stappen op java.....lijkt me geen goed plan. Bovendien is java geheugenslurpend (n) Maar kun je dan misshien een paar voordelen van java geven, dat ik may be toch overstap(denk eik niet maar je weet het maar nooit)

Dr HenDre 02-08-2003 17:59

Citaat:

niemand schreef op 02-08-2003 @ 18:57:
Best een goed idee ja.
PHP kan ook, maar daarin word een interactive client toch al lastig.

nah, ik zat eerst te twijfelen tussen php en cpp, maar php is webbased en vooral voor sites. En dat wil ik niet!

Chimera 02-08-2003 18:51

Citaat:

Dr HenDre schreef op 02-08-2003 @ 18:57:
tja, ik ben eenmaal met cpp begonnen, een aantal maanden geleden. En om nou over te stappen op java.....lijkt me geen goed plan. Bovendien is java geheugenslurpend (n) Maar kun je dan misshien een paar voordelen van java geven, dat ik may be toch overstap(denk eik niet maar je weet het maar nooit)
Geheugenslurpend? Nja, de VM ja, maar dat is constant. Valt erg mee hoor.

Voordeel voornamelijk dat het makkelijker is (duidelijke foutmeldingen en geen geheugenbeheer), het een grote duidelijke en eenduidige API heeft, en het een veel striktere OO taal is. Java is voor beginners gewoon veel beter.

Chimera 02-08-2003 18:52

Citaat:

niemand schreef op 02-08-2003 @ 18:57:
Best een goed idee ja.
PHP kan ook, maar daarin word een interactive client toch al lastig.

Mwoa. PHP is toch vooral een scripttaal, niet erg geschikt om een server applicatie te maken.

Dr HenDre 03-08-2003 10:59

en in hoeverre verschilt de syntax van cpp en java? Kun je misshien een klein voorbeeld geven van een java prog? :)

Chimera 03-08-2003 11:27

Citaat:

Dr HenDre schreef op 03-08-2003 @ 11:59:
en in hoeverre verschilt de syntax van cpp en java? Kun je misshien een klein voorbeeld geven van een java prog? :)
Weinig, lijkt eigenlijk sprekend op mekaar:

Code:

public class HelloWorld
{
  public static void main(String[] argv)
  {
        System.out.println("Hello world!");
  }
}


Dr HenDre 03-08-2003 16:03

Citaat:

Chimera schreef op 03-08-2003 @ 12:27:
Weinig, lijkt eigenlijk sprekend op mekaar:

Code:

public class HelloWorld
{
  public static void main(String[] argv)
  {
        System.out.println("Hello world!");
  }
}


hmm, ik neem uit je voorbeeld aan dat je per se OO moet programmeren? en zijn de woorden public en static verplicht bij void main() of is dat optioneel?
En nog een vraag, lijkt java meer op c(++) of op C#? Want ik wil eigenlijk uiteindelijk naar C#, maar toen ik met c++ begon wist ik daar nog niets van af. Maar voorzover ik weet lijkt java meer op c# dan op c(++)?


Alle tijden zijn GMT +1. Het is nu 00:51.

Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.