Advertentie | |
|
![]() |
||
hmm, na ik heb nu het volgende gevonden
http://analyser.oli.tudelft.nl/beej/.../advanced.html daar staat het volgende Citaat:
![]() |
![]() |
||
Citaat:
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. |
![]() |
|
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
__________________
[AvatarDraw(c) v1.0 is uit de lucht (en per ongeluk van mijn hardeschijf verdwenen tijdens het weggooien ervan
|
![]() |
||
Citaat:
|
![]() |
||
Citaat:
![]()
__________________
[AvatarDraw(c) v1.0 is uit de lucht (en per ongeluk van mijn hardeschijf verdwenen tijdens het weggooien ervan
|
![]() |
||
Citaat:
trouwens ik wil geen zeikerd zijn hoor maar goto in je code? ![]()
__________________
[AvatarDraw(c) v1.0 is uit de lucht (en per ongeluk van mijn hardeschijf verdwenen tijdens het weggooien ervan
|
![]() |
||
Citaat:
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 |
![]() |
||
Citaat:
Goto's zijn nooit onmisbaar, en zijn gewoon een gruwelijk lelijke constructie. |
![]() |
||
Citaat:
![]() |
![]() |
||
Citaat:
__________________
[AvatarDraw(c) v1.0 is uit de lucht (en per ongeluk van mijn hardeschijf verdwenen tijdens het weggooien ervan
|
![]() |
||
Citaat:
![]() |
![]() |
||
Citaat:
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. |
![]() |
||
Citaat:
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* 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 |
Advertentie |
|
![]() |
|
wijst buffer naar geldig geheugen? of is het gewoon een pointer die nergens naar wijst... in dat geval... reserveer geheugen
![]()
__________________
[AvatarDraw(c) v1.0 is uit de lucht (en per ongeluk van mijn hardeschijf verdwenen tijdens het weggooien ervan
|
![]() |
||
Citaat:
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); } 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. |
![]() |
||
Citaat:
|
![]() |
||
Citaat:
![]() |
![]() |
||
Citaat:
|
![]() |
||
Citaat:
__________________
[AvatarDraw(c) v1.0 is uit de lucht (en per ongeluk van mijn hardeschijf verdwenen tijdens het weggooien ervan
|
![]() |
|
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
__________________
[AvatarDraw(c) v1.0 is uit de lucht (en per ongeluk van mijn hardeschijf verdwenen tijdens het weggooien ervan
|
![]() |
||
Citaat:
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 ![]() 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 Laatst gewijzigd op 02-08-2003 om 16:06. |
![]() |
||
Citaat:
![]() |
![]() |
||
Citaat:
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. |
![]() |
||
Citaat:
Code:
public class HelloWorld { public static void main(String[] argv) { System.out.println("Hello world!"); } } |
![]() |
||
Citaat:
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(++)? |
Advertentie |
|
![]() |
|
|