Da's een kwestie van economie: goede hardware is tegenwoordig goedkoper dan een goede programmeur.quote:Op vrijdag 6 augustus 2010 18:39 schreef progje het volgende:
Echt schijtziek word ik er van, totaal geen computer kennis meer...
Wat maakt het nou uit hoe het geheugen werkt, je propt er toch gewoon een extra bankje bij als het te traag wordt
Nou, als de salaris-eis nou ook eens in overeenstemming was met het gewenste niveau..quote:Op vrijdag 6 augustus 2010 18:46 schreef thabit het volgende:
[..]
Da's een kwestie van economie: goede hardware is tegenwoordig goedkoper dan een goede programmeur.
Ik neem aan dat een C++ programmeur wel meer verdient dan iemand die formpjes in elkaar klikt in C#?quote:Op vrijdag 6 augustus 2010 18:49 schreef progje het volgende:
[..]
Nou, als de salaris-eis nou ook eens in overeenstemming was met het gewenste niveau..
Maar dat laat helaas ook nog vaak te wensen over.
En allemaal zo heerlijk groot ego, ze vinden zichzelf allemaal de beste en overleggen ho maar
verder ben ik niet gefrustreerd hoor.
Nu werk ik zelf in een omgeving waar ook veel in .Net en C# wordt geprogrammeerd, misschien hoort het ook wel bij dat wereldje ik weet het niet..
Ja daar was ik al bang voorquote:Op vrijdag 6 augustus 2010 18:10 schreef Cruise.Elroy het volgende:
Euh? Nee want met #include wordt de file direct in je parser geramd. Dus dat later weer undo-en is niet te doen.
#include zet de inhoud van de file direct tussen je code, het is niet zoals in Java e.d.
Je kan dus een losse regel code in een file zetten, en deze dan includen midden in een functie bijvoorbeeld
Uiteindelijk is elk programma in elke taal op het Windows platform uiteindelijk een wrapper voor de Win32 api, er is geen andere logische manier om Windows "te gebruiken". Hoe hoger het niveau, hoe beter (voor de user) maar (mogelijk) trager.quote:Op vrijdag 6 augustus 2010 21:16 schreef TeringHenkie het volgende:
Grappig is trouwens wel dat de Assemblies van Microsoft gewoon wrappers om Win32 zijn. Bijvoorbeeld Messagebox.Show roept uiteindelijk gewoon MessageBox aan in user32.dll. Als iets niet kan in C#, is er nog geen developer daar die er een wrapper voor heeft geschreven.![]()
Conclusie: C# voor de GUI, en de snelle/geavanceerde code stop je in een c++ DLL die je dan DllImport
Als je met handgeschreven stiekem optimaal bedoelt, dan ja. Handgeschreven ASM is vaak alles behalve optimaal. Niet zo gek als je de intel procs zien icm 8086 ASM.quote:Op zondag 8 augustus 2010 21:38 schreef Trollface. het volgende:
Handgeschreven ASMdaar kan geen compiler tegenop
Ik ben nou eenmaal gekquote:Op zondag 8 augustus 2010 21:56 schreef Cruise.Elroy het volgende:
[..]
Als je met handgeschreven stiekem optimaal bedoelt, dan ja. Handgeschreven ASM is vaak alles behalve optimaal. Niet zo gek als je de intel procs zien icm 8086 ASM.
Vaak kan je met C# talen snelheidswinst halen omdat tight loops run-time herschreven worden naar gelang de variabelen. Natuurlijk kan je dit zelf gaan schrijven in ASM, maar dan ben je echt gek.
Dat C# sneller kan zijn dan C++ snap ik wel, maar dan is dat (neem ik aan) alleen maar omdat OF je code brakker is, OF omdat je compiler niet kan optimaliseren. Het probleem met C# is alleen dat je voor de eenvoudigste dingen meteen 3 objecten aan moet gaan maken, wat je waarschijnlijk veel geheugen en cpu-tijd kost.quote:Op zondag 8 augustus 2010 21:24 schreef Cruise.Elroy het volgende:
[..]
Uiteindelijk is elk programma in elke taal op het Windows platform uiteindelijk een wrapper voor de Win32 api, er is geen andere logische manier om Windows "te gebruiken". Hoe hoger het niveau, hoe beter (voor de user) maar (mogelijk) trager.
Dat het anders kan laten Linux ports en Java apps zien, maar daar wordt je echt niet blij van, al is het alleen al het gebruikersgemak, al custom dialogs en lelijke L&F.
Verder kan C# zeker wel sneller zijn dan C++, zelfs sneller dan compiled ASMdat komt omdat je stukken (byte)code real-time opnieuw kan compilen naar ASM als de omstandigheden daar toe zijn.
Je code draait gewoon op je CPU, waar anders opquote:Op zondag 8 augustus 2010 22:16 schreef TeringHenkie het volgende:
[..]
Dat C# sneller kan zijn dan C++ snap ik wel, maar dan is dat (neem ik aan) alleen maar omdat OF je code brakker is, OF omdat je compiler niet kan optimaliseren. Het probleem met C# is alleen dat je voor de eenvoudigste dingen meteen 3 objecten aan moet gaan maken, wat je waarschijnlijk veel geheugen en cpu-tijd kost.
Hoe zit dat nou met de machinecode die uitgevoerd wordt? Ik heb begrepen dat moderne OSen een HAL om je hardware heen bouwen. Mag ik dan ook aannemen dat machinecode wel direct op je processor draait, en dat er alleen interrupts aangeroepen mogen worden die opgevangen worden door je HAL?
Low-level programming is mijn dingquote:Op zondag 8 augustus 2010 22:19 schreef Cruise.Elroy het volgende:
[..]
Je code draait gewoon op je CPU, waar anders opAlleen kan je met Protected Mode etc. heel veel dingen afschermen, zoals interrupts, geheugenadressen etc. Een HAL is een low-level variant van een API.
Dat snap ik, maar de windows kernel mag niet hetzelfde als de HAL, en een applicatie mag niet hetzelfde als de kernel. Hoe wordt dat afgeschermd? Interrupts die worden afgevangen/geblokkeerd oid?quote:Op zondag 8 augustus 2010 22:19 schreef Cruise.Elroy het volgende:
[..]
Je code draait gewoon op je CPU, waar anders opAlleen kan je met Protected Mode etc. heel veel dingen afschermen, zoals interrupts, geheugenadressen etc. Een HAL is een low-level variant van een API.
Dat ik bij FOK! dev wil niet zeggen dat ik alleen aan webdevving doequote:
Nee maar iemand die low-level zit te hacken (quote:Op zondag 8 augustus 2010 22:29 schreef Trollface. het volgende:
[..]
Dat ik bij FOK! dev wil niet zeggen dat ik alleen aan webdevving doe
Je weet toch dat dat een snel in elkaar geflanst stukje code is wat in de praktijk niets doet?quote:Op zondag 8 augustus 2010 22:32 schreef Cruise.Elroy het volgende:
[..]
Nee maar iemand die low-level zit te hacken () is normaal niet iemand die webdevving echt kan waarderen.
En je ASM is niet echt geweldig. nm, de mijne is ook kut
Dat bedoel ik dus. Wat ik eerst niet snapte, was dat ALLE code op je PC uiteindelijk ook op de CPU stacks zit te pushen en weet ik veel. Hoe zorg je dat dat allemaal niet in de weg zit? Ik neem aan dat als een ander proces CPU-tijd krijgt, jouw registertjes ergens worden opgeslagen, en die andere code z'n waardes weer in de registertjes wordt gestoptquote:Op zondag 8 augustus 2010 22:30 schreef Cruise.Elroy het volgende:
Afaik wordt dat idd met interrupts en dergelijke geregeld. Sowieso heb je je eigenlijk geheugen-ruimtes waardoor je niet meer bij iedereen kan rondkijken.
Details o.a. hier:
Dit is de processor-side info: http://en.wikipedia.org/wiki/Protected_mode
En hier heb je de verschillende permissie-"rings": http://en.wikipedia.org/wiki/Ring_(computer_security)
Multi-threading en multi-tasking doet zogenaamde context-switching die alles dus idd keurig weg zet. Interrupts e.d. ook natuurlijk:quote:Op zondag 8 augustus 2010 22:36 schreef TeringHenkie het volgende:
[..]
Dat bedoel ik dus. Wat ik eerst niet snapte, was dat ALLE code op je PC uiteindelijk ook op de CPU stacks zit te pushen en weet ik veel. Hoe zorg je dat dat allemaal niet in de weg zit? Ik neem aan dat als een ander proces CPU-tijd krijgt, jouw registertjes ergens worden opgeslagen, en die andere code z'n waardes weer in de registertjes wordt gestopt
HA! Dus eigenlijk was DOS wel een systeem wat multitasking aankon. Immers zouden drivers hun werk nooit kunnen doenquote:Op zondag 8 augustus 2010 22:38 schreef Cruise.Elroy het volgende:
[..]
Multi-threading en multi-tasking doet zogenaamde context-switching die alles dus idd keurig weg zet. Interrupts e.d. ook natuurlijk:
http://en.wikipedia.org/wiki/Context_switch
Multitasking is in principe sowieso een must op een OS.quote:Op zondag 8 augustus 2010 22:46 schreef TeringHenkie het volgende:
[..]
HA! Dus eigenlijk was DOS wel een systeem wat multitasking aankon. Immers zouden drivers hun werk nooit kunnen doen
Waarom zou je multi-tasking nodig hebben voor drivers? Die hoeven toch niet los van een applicatie iets uit te voeren?quote:Op zondag 8 augustus 2010 22:46 schreef TeringHenkie het volgende:
[..]
HA! Dus eigenlijk was DOS wel een systeem wat multitasking aankon. Immers zouden drivers hun werk nooit kunnen doen
Volgens mij heb ik hier de broncode van MS DOS 5.0 nog liggen, maar ik heb geen zin om hem door te spitten.quote:Op zondag 8 augustus 2010 23:00 schreef Cruise.Elroy het volgende:
[..]
Nee in DOS werkte alle(?) drivers met interrups, TSR systemen en ingeladen stukken uitvoerbare code. Geen multi-tasking dus.
Maar hoe werkte dat dan als je de muis bewoog? Of als je netwerkkaart data ontving? Werd die pas uit de buffer gehaald als je programma polde of de socket data te verwerken had?quote:Op zondag 8 augustus 2010 23:00 schreef Cruise.Elroy het volgende:
[..]
Waarom zou je multi-tasking nodig hebben voor drivers? Die hoeven toch niet los van een applicatie iets uit te voeren?
Nee in DOS werkte alle(?) drivers met interrups, TSR systemen en ingeladen stukken uitvoerbare code. Geen multi-tasking dus.
Een muis-driver registereerde een stuk code ergens in een interrupttabel (oid), maar die driver voerde dus zelf geen code uit "los" van de applicatie. Die applicatie riep gewoon driver-code aan waar nodig, en wachtte tot deze klaar was.
Als je code wilde uitvoeren "samen" met een applicatie moest je een timer-interrupt aanzette die gewoon elke zoveel ms triggerde en dan jouw code weer uitvoerde. Zoals een trainer van games bijv. Een programma die in het geheugen ligt te wachten totdat hij wordt uitgevoerd heet een TSR.
http://en.wikipedia.org/wiki/Terminate_and_Stay_Resident
Volgens mij is dit niet helemaal waar. Als ik in C# een object aanmaak, maakt het framework voor mij een object aan, dat doet de code niet zelf. Ook neem het framework mij GC uit handen. Als ik in C++ een object aanmaak, maakt mijn eigen code voor mij geheugen aan (in een door windows bepaalde geheugenruimte weliswaar). Als voorbeeld: als ik twee ints optel, doet mijn C++ programma dat gewoon in de registers, zonder tussenkomst van een of andere DLL.quote:Op zondag 8 augustus 2010 21:24 schreef Cruise.Elroy het volgende:
[..]
Uiteindelijk is elk programma in elke taal op het Windows platform uiteindelijk een wrapper voor de Win32 api, er is geen andere logische manier om Windows "te gebruiken".
Dat is ook de rede dat zware-/besturingsprogramma's doorgaans in C++ geschreven zijnquote:Op zondag 8 augustus 2010 23:56 schreef TeringHenkie het volgende:
[..]
Volgens mij is dit niet helemaal waar. Als ik in C# een object aanmaak, maakt het framework voor mij een object aan, dat doet de code niet zelf. Ook neem het framework mij GC uit handen. Als ik in C++ een object aanmaak, maakt mijn eigen code voor mij geheugen aan (in een door windows bepaalde geheugenruimte weliswaar). Als voorbeeld: als ik twee ints optel, doet mijn C++ programma dat gewoon in de registers, zonder tussenkomst van een of andere DLL.
Wat is volgens jou het verschl tusen "framework" en "code"? Een C# gaat echt geen DLL gebruiken om ints op te tellen. Het aanmaken van een object gaat ook op eenzelfde manier als in C++, hetzij met iets meer boekhouding. De lijn tussen framework runtime en je "eigen code" is flinterdun, en de compiler zal ze ook gewoon doorelkaar heen compileren.quote:Op zondag 8 augustus 2010 23:56 schreef TeringHenkie het volgende:
[..]
Volgens mij is dit niet helemaal waar. Als ik in C# een object aanmaak, maakt het framework voor mij een object aan, dat doet de code niet zelf. Ook neem het framework mij GC uit handen. Als ik in C++ een object aanmaak, maakt mijn eigen code voor mij geheugen aan (in een door windows bepaalde geheugenruimte weliswaar). Als voorbeeld: als ik twee ints optel, doet mijn C++ programma dat gewoon in de registers, zonder tussenkomst van een of andere DLL.
C# compileert dat gewoon tot snoeiharde ASMquote:Op maandag 9 augustus 2010 00:13 schreef netolk het volgende:
[..]
Dat is ook de rede dat zware-/besturingsprogramma's doorgaans in C++ geschreven zijn
Maar doet C# dat met tussenkomst van DLL's?? Dat zou behoorlijk inefficiënt zijn
Al die info stond op je hardware te wachten totdat je het pollde ja. Dat is in Windows nog steeds zo; een driver is geen process, dat zou erg raar zijn.quote:Op zondag 8 augustus 2010 23:08 schreef TeringHenkie het volgende:
[..]
Maar hoe werkte dat dan als je de muis bewoog? Of als je netwerkkaart data ontving? Werd die pas uit de buffer gehaald als je programma polde of de socket data te verwerken had?
SPOILEROm spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.bij de raw data copy (die while(!Read.eof()) loop) komt ie nooit aan bij end of file en krijg ik dus een oneindig groot ico file... weet iemand miss wat ik niet goed doeBeware of the Raping Zebra's
quote:Op woensdag 25 augustus 2010 12:23 schreef netolk het volgende:
Hey, ik heb problemen met het maken van een ico...
ik heb op http://www.hackerfactor.c(...)-Ico-Ico-Un-Day.html en op http://en.wikipedia.org/wiki/BMP_file_format gekeken, maar nu werkt de volgende code niet...Kijk eens naar de functies seekg en read van fstream. Houd er verder rekening mee dat je structs goed gepacked (dus dat iedere char maar 1 byte inneemt ipv 4)SPOILEROm spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.bij de raw data copy (die while(!Read.eof()) loop) komt ie nooit aan bij end of file en krijg ik dus een oneindig groot ico file... weet iemand miss wat ik niet goed doe
nou op een gegeven moment leest ie alleen maar het zelfde getal uit...quote:Op donderdag 26 augustus 2010 11:25 schreef Cruise.Elroy het volgende:
Wat lees je dan uit, zet die zooi op het scherm en kijk waar het mis gaat. Toch niet zo enorm moeilijk?
nee iets van 236825 ofzo het maakte niet uit of ik binary las en schreef of niet bleef het zelfde getal krijgen...quote:Op donderdag 26 augustus 2010 12:44 schreef Cruise.Elroy het volgende:
Je moet ook geen << operator gebruiken bij binary streams. Je wilt gewoon byte-voor-byte die data ophalen en wegschrijven met read en write. Als hij nog maar 1 getal uitleest, welke is dat dan? -1 ofzo?
Gebruik je nog steeds << ? Want die moet je dus _niet_ gebruiken voor dit soort dingenquote:Op donderdag 26 augustus 2010 15:08 schreef netolk het volgende:
[..]
nee iets van 236825 ofzo het maakte niet uit of ik binary las en schreef of niet bleef het zelfde getal krijgen...
Probleem is opgelost... Had eerst mn struct maar eens even in C++ geschreven in plaats van die windows meuk met byte enzo en daar hadden ze arrays dus dacht nou dat kan dan ook wel in 1 variabele maar dat kan dus niet XDquote:Op donderdag 26 augustus 2010 16:18 schreef Cruise.Elroy het volgende:
[..]
Gebruik je nog steeds << ? Want die moet je dus _niet_ gebruiken voor dit soort dingen
edit: ik zie dat je hele grote getallen krijgt, dus je bent niet byte voor byte binair aan het lezen. Dat moet je wel doen aangezien een BMP/ICO file vol zit met binaire troep.
Gooi dat getal er eens in HEX uit, misschien iets van 0xFFFF of 0x8000: een of andere errorwaarde.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | for(int i = 0; i < argc; i++){ // tijdelijk std::cout << argv[i] << '\n'; } if(argc > 1){ if(argc == 2){ if(argv[1] == "/?"){ std::cout << '\n' << argv[0] << " [bitmap 1] etc. \n\n"; std::cout << "[bitmap] File location of a bitmap (*.bmp)\n"; std::cout << "/? Program help\n"; } } return 0; } |
1 2 | /? |
umja dat klopte idd ook niet maar het is niet de oplossing ik compile overigens met g++ niet dat dat uit zou moeten maken maar tochquote:
1 |
1 2 3 4 5 6 7 8 | { for (int x = 0; str1[x] != 0 || str2[x] != 0; x++) { if (str1[x] != str2[x]) return false; } return true; } |
Dit klinkt idd logisch had ik zelf nog niet aan gedachtquote:Op zaterdag 28 augustus 2010 13:44 schreef Cruise.Elroy het volgende:
netolk, je bent bekend met de string-zero opslag in C++ neem ik aan?
Een string sla je dus op als een reeks char's, en je point dan naar het begin van de string. het einde van de string wordt aangegeven met een nul (als character kan je het schrijven als '\0')
Als je dus twee strings wilt vergelijken moet je dus het volgende doen:
[ code verwijderd ]
deze lus loopt de beide strings af totdat er een verschil wordt gevonden, of totdat ze beide tegelijk aflopen. Oh en deze methode is niet optimaal en zit wss vol fouten, gebruik daarom de ingebouwde strcmp() functie.
Of gebruik de std::string klasse uit de STL lib van C++, maar mss leuk om precies te weten wat je doet.
Ik laat hem een tijdelijk object aanmaken voor het if-statement gebeurenquote:Op zondag 29 augustus 2010 15:33 schreef Cruise.Elroy het volgende:
Vergeet niet dat je bij elke string() call wel een stukje geheugen alloceert etc. Als je met std::string werkt, probeer dan zo snel mogelijk (en 1-malig) alle inkomende char* naar strings te converteren, en werk daarna met const string& referenties (of pointers) om zo het onnodig aanmaken van strings te voorkomen.
Niet dat je daarmee in de problemen zal komen, tenzij je echt tijdkritieke code gaat schrijven.
1 2 3 | //code } |
ja dat mag, maar kijk uit voor bijv:quote:Op maandag 30 augustus 2010 23:35 schreef netolk het volgende:
[..]
Ik laat hem een tijdelijk object aanmaken voor het if-statement gebeuren
zoiets als dit
[ code verwijderd ]
1 2 3 4 | else if (std::string(bla) == "hoi1") func_hoi1(); else if (std::string(bla) == "hoi2") func_hoi2(); else if (std::string(bla) == "hoi3") func_hoi3(); |
1 2 3 4 5 | if (blastr == "hoi") func_hoi0(); else if (blastr == "hoi1") func_hoi1(); else if (blastr == "hoi2") func_hoi2(); else if (blastr == "hoi3") func_hoi3(); |
1 |
Top dan kan ik het gewoon zo laten staan dusquote:Op donderdag 2 september 2010 11:12 schreef Cruise.Elroy het volgende:
ja ik had het nagezocht, en dat is idd zo. Vergeet niet dat std::string een specialisatie is van std::basicstring<> maar deze heeft nog extra functies om handig met de "ouderwetse" string0s uit C om te kunnen gaan
[ code verwijderd ]
quote:Op donderdag 2 september 2010 14:37 schreef Cruise.Elroy het volgende:
Dat kan sowieso, als je er 20.000 per seconde gaat doen, dan wordt het pas een issue
hmm.. oke bedankt in ieder gevalquote:Op maandag 20 september 2010 13:11 schreef Cruise.Elroy het volgende:
Nee, niet makkelijk volgens mij. Bijna alle standaard I/O is min of meer console-achtig.
Wat je kan doen is een frame-workje ergens downloaden die cross-platform is en die dingen goed wrapt.
Trollquote:Op maandag 20 september 2010 15:32 schreef thabit het volgende:
C++ is dan ook meer een verzameling hacks bij elkaar dan een echte programmeertaal.
quote:Op maandag 20 september 2010 15:32 schreef thabit het volgende:
C++ is dan ook meer een verzameling hacks bij elkaar dan een echte programmeertaal.
quote:
Dit klopt allemaal, maar dat komt gewoon omdat de taal op een bepaald abstractieniveau zit. Maakt de taal niet slecht, gewoon krachtiger maar minder geschikt voor RAD.quote:Op maandag 20 september 2010 23:04 schreef thabit het volgende:
Face it, mensen: het is niet goed porteerbaar, het heeft geen geheugenmanagement met garbage collector, het heeft geen goede ingebouwde ondersteuning voor parallelisatie. t Is eigenlijk gewoon een verkapte assembly en alleen handig voor kleine libraryfuncties die tot op de bit geoptimaliseerd moeten zijn en real-time applicaties en games waar elke ms telt en geheugen vaak de halve GB net haalt.
quote:Op dinsdag 21 september 2010 13:29 schreef Cruise.Elroy het volgende:
[..]
Dit klopt allemaal, maar dat komt gewoon omdat de taal op een bepaald abstractieniveau zit. Maakt de taal niet slecht, gewoon krachtiger maar minder geschikt voor RAD.
1 2 3 | netdb.h netinet/in.h |
SPOILEROm spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.Weet iemand hoe ik deze code onder Windows kan laten werken?
PS. Ik gebruik de mingw compiler...Beware of the Raping Zebra's
Oke bedankt ik zal eens even een beetje gaan kloten met die winsock header en kijken of ik er wat uit kan krijgen...quote:Op woensdag 22 september 2010 21:47 schreef Cruise.Elroy het volgende:
Onder Windows kan je winsock.h gebruiken, werkt nagenoeg hetzelfde, maar je zal hier en daar wat calls moeten versleutelen.
Nou ik ben eerst maar begonnen met het volgen van een tut ipv dat example te draaienquote:Op donderdag 23 september 2010 10:08 schreef Cruise.Elroy het volgende:
Nog gelukt? Want winsock zou redelijk gelijk moeten zijn aan de standaard berkley sockets interface, zeker voor simpele apps.
http://en.wikipedia.org/wiki/Berkeley_sockets
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | #include "windows.h" #include "iostream" #include "stdlib.h" #include "winsock.h" #include "assert.h" int _tmain(int argc, _TCHAR* argv[]) { WSADATA wsadata; int result = WSAStartup(MAKEWORD(2,2), &wsadata); //using winsock version 2.2 assert(result == 0); SOCKET listener; listener = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); sockaddr_in localip; localip.sin_family = AF_INET; localip.sin_addr.s_addr = inet_addr("127.0.0.1"); localip.sin_port = htons(12345); result = (bind(listener, (SOCKADDR*) &localip, sizeof(localip))); assert(result == 0); listen(listener, SOMAXCONN); SOCKET incoming; incoming = accept(listener, NULL, NULL ); int error = WSAGetLastError(); assert(incoming != INVALID_SOCKET); closesocket(listener); // close listener, no longer needed, otherwise could be used again char buffer[100]; while (1) { int bytesreceived = recv(incoming, buffer, sizeof(buffer), 0); if (buffer[0] == 'x') break; send(incoming, buffer, bytesreceived, 0); } WSACleanup(); return 0; } |
Ja dat klopt idd het is nu opgelost maar ik kan nergens een duidelijk lijstje vinden van de fout codes van WSAGetLastError()...quote:Op zaterdag 25 september 2010 19:53 schreef Cruise.Elroy het volgende:
Ja dat zal je toch echt even zelf moeten debuggen, ik denk dat de client gewoon de verbinding verbreekt zodra hij verbinding heeft gemaakt. Iig een program-flow fout van jouw kant waarschijnlijk.
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |