void updateClientInfo(struct info info_ary[], int info_num, struct client* clnt, struct info info){ int idx; idx = getClientInfo(info_ary, info_num, clnt->info.name); updateInfo(info_ary, idx, info); clnt->info = info; saveClientInfo(clnt); }
int main(int argc, char *argv[]) { int client, listener; int accepted_bytes; struct sockaddr_in addr; struct sockaddr_in clientaddr; struct hostent* clientInfo; char accepted_data[1024]; char *clientInfoName; if (argc < 2) { error("ERROR, no parametres provided"); } listener = createSocket(); bindSocket( listener, &addr, argv[1]); printf("Starts at port %s", argv[1]); fflush(stdout); listen(listener, 1); while(1) { clientaddr.sin_family = AF_INET; socklen_t client_addr_len = sizeof( clientaddr ); client = accept(listener, (struct sockaddr*)& clientaddr, &client_addr_len ); if( client < 0 ) { continue; } clientInfo = gethostbyaddr( &clientaddr.sin_addr, sizeof ( struct in_addr ) , AF_INET); clientInfoName = getClientInfo(*clientInfo); send(client, clientInfoName, strlen( clientInfoName ), 0); while(1) { accepted_bytes = recv(client, accepted_data, 1024, 0); if( accepted_bytes <= 0) break; send(client, accepted_data, accepted_bytes, 0); } free(clientInfoName); close(client); } close(listener); return 1; }
struct client* addClient(struct info info[], int* info_num, struct client clnt[], int* clnt_num, int socket, char* name){ struct client* new_clnt; int idx; pthread_mutex_lock(&clnt_lock); new_clnt = &(clnt[*clnt_num]); *clnt_num += 1; new_clnt->socket = socket; if((idx = getClientInfo(info, *info_num, name)) == -1){ new_clnt->info = newInfo(name); addInfo(info, info_num, new_clnt->info); }else{ new_clnt->info = info[idx]; } pthread_mutex_unlock(&clnt_lock); return new_clnt; }
QString Client::getCaption() const { return getClientInfo()->caption; }
QString Client::getDevice() const { return getClientInfo()->deviceType; }
QString Client::getOs() const { return getClientInfo()->os; }
QByteArray Client::getIdHash() const { return getClientInfo()->hash; }