/************************************* Deze functie behandelt 1 wagen dat aan het laden is. *************************************/ void *doeiets(void* erin){ struct arg input=*((struct arg *)erin); int error, socket2; char *tekst=malloc(tekstlengte*sizeof(char)); void *buffer=malloc(bufferlengte*sizeof(char)); struct sockaddr_storage client_addr; socklen_t clilen; struct arg server; int open=1; int useport=input.connection; memset(&client_addr, 0, sizeof(client_addr)); clilen=16; socket2=accept(input.socket1, (struct sockaddr *)&client_addr, &clilen); printf("onze poort: %i\n",useport); server=startClient(2*poort-useport-4,poort_centrale_server,host_centrale_server); if(socket2<0){ printf("problemen bij accept van client, error nummer %i, boodschap: %s\n",socket2, gai_strerror(socket2)); return 0; } while(open){ if(isReadyToRead(server.socket1,3000000)){ error=read(server.socket1,buffer,255); if(error<0)printf("problemen bij het ontvangen van het bericht van de server, nummer %i: %s\n", error, gai_strerror(error)); } else break; error=send(socket2,buffer,strlen(buffer)*sizeof(char),input.hints.ai_flags); if(error<0){ printf("problemen bij verzenden van hetpakket\n"); open=0; } sprintf(buffer,""); if(isReadyToRead(socket2,3000000)){ error=read(socket2,buffer,255); printf("%s\n",buffer); if(error<0){ printf("problemen bij het ontvangen van de client zijn tweede bericht\n"); open=0; } } else break; error=send(server.socket1, buffer, strlen(buffer)*sizeof(char), server.hints.ai_flags); if(error<0){ printf("problemen bij het verzenden van een bericht naar de server"); } } printf("De funcie is gesloten\n"); close(input.socket1); close(socket2); free(buffer); free(tekst); return 0; }
int OsSocket::read(char* buffer, int bufferLength, long waitMilliseconds) { int numBytes = 0; if(isReadyToRead(waitMilliseconds)) { numBytes = read(buffer, bufferLength); } return(numBytes); }
// Because we have overided one read method, we // must implement them all in OsSSLConnectionSocket or // we end up hiding some of the methods. int OsSSLConnectionSocket::read(char* buffer, int bufferLength, long waitMilliseconds) { int bytesRead = -1; if(isReadyToRead(waitMilliseconds)) { bytesRead = SSL_read (mSSL, buffer, bufferLength); } #ifdef VALGRIND_MAKE_READABLE // If we are using Valgrind, we have to compensate for the fact that // Valgrind thinks all the output of SSL_read is undefined. // (This probably comes from SSL's use of uninitialized memory as part // of its key-generation algorithm.) VALGRIND_DISCARD(VALGRIND_MAKE_READABLE(&bytesRead, sizeof (bytesRead))); if (bytesRead > 0) { VALGRIND_DISCARD(VALGRIND_MAKE_READABLE(buffer, bytesRead)); } #endif /* VALGRIND_MAKE_READABLE */ return(bytesRead); }