Ik ben bezig een single-client server om te schrijven naar een multi-client server en vraag me af of ik op de goede weg zit. De originele code was als volgt (vereenvoudigd):
*****
int sockfd;
void init()
open socket;
bind;
listen;
sockfd = accept;
pthread_create(&thread, handle_client);
void handle_client()
ret = write(sockfd, buffer, buflen);
*****
De nieuwe server heb ik nu als volgt, en mijn belangrijkste vraag is als volgt: sockfd was in de oude server als globale variabele gedefinieerd, maar dit kan neem ik aan niet omdat elke client zijn eigen socket krijgt. Wat is dan de makkelijkste oplossing? Nu geef ik de socket constant als paramter mee:
*****
void init()
pthread_create(&child,listen);
void listen()
int sockfd;
open socket;
bind;
listen;
for ;; { sockfd = accept; pthread_create(&thread, handle_client, sockfd; }
void handle_client(int sockfd)
ret = write(sockfd, buffer, buflen);
*****
Maar ik weet niet hoe het precies met threads zit; is het mogelijk om zoiets als een globale variable binnen de thread te definieren zodat ik niet de socket als parameter mee hoef te geven aan alle procedures die binnen de thread worden aangeroepen?
*****
int sockfd;
void init()
open socket;
bind;
listen;
sockfd = accept;
pthread_create(&thread, handle_client);
void handle_client()
ret = write(sockfd, buffer, buflen);
*****
De nieuwe server heb ik nu als volgt, en mijn belangrijkste vraag is als volgt: sockfd was in de oude server als globale variabele gedefinieerd, maar dit kan neem ik aan niet omdat elke client zijn eigen socket krijgt. Wat is dan de makkelijkste oplossing? Nu geef ik de socket constant als paramter mee:
*****
void init()
pthread_create(&child,listen);
void listen()
int sockfd;
open socket;
bind;
listen;
for ;; { sockfd = accept; pthread_create(&thread, handle_client, sockfd; }
void handle_client(int sockfd)
ret = write(sockfd, buffer, buflen);
*****
Maar ik weet niet hoe het precies met threads zit; is het mogelijk om zoiets als een globale variable binnen de thread te definieren zodat ik niet de socket als parameter mee hoef te geven aan alle procedures die binnen de thread worden aangeroepen?