Я пытаюсь создать чат с использованием TCP / IP на C, но каждый новый клиент - это новый поток. Клиенты должны общаться друг с другом с сервером. У меня проблема при создании новой темы.
При вызове pthread_create(&thread_id, NULL, messenger, (void*)client_socket)
я пытаюсь передать дескриптор сокета нового клиента и добавить его в массив целых чисел. Но что бы я ни пытался, я получаю это предупреждение:
присваивание делает целое число из указателя без приведения
Вот код, с которым у меня проблемы. В функции main
есть глобальная переменная int, которая называется users
:
users = 0;
int new_socket;
int *clinet_socket;
new_socket = accept(master_socket, (struct sockaddr *)&address, (socklen_t*)&addrlen);
client_socket = &new_socket;
pthread_create(&thread_id, NULL, messenger, (void*)client_socket)
Вот функция messenger
:
void *messenger(void *sockel){
unsigned int (*sockerde)[30];
(*sockerde)[users] = (unsigned int(*))&sockel;
users++;
}
Смысл в том, чтобы сохранить массив с дескрипторами сокетов всех подключенных клиентов, чтобы использовать его позже.