示例#1
0
/*************************************
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;
	
}
示例#2
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);
}