когда несколько клиентов отправляют пакеты на сервер, как я могу написать код для получения их в соответствующих дочерних потоках вместо получения их в основном процессе
Я пишу c программу для клиента и сервера udp, используя потоки, поэтому, если у меня есть 4 подключенных клиента, будут созданы 4 потока, и каждый поток отправит некоторые данные. после получения данных клиенты будут отправлять подтверждения, но проблема в том, что эти подтверждения должны быть получены соответствующими потоками, но
У меня есть функция receivefrom в основном процессе для прослушивания новых клиентов, и у меня также есть функция receivefrom в потоках для получения ack-пакетов, но эти ack, поступающие от клиента, идут в основной процесс, а не в потоки, пожалуйста, помогите мне заранее спасибо
мой код
код сервера
//created udp socket
// binded
while(1)
{
// to receive new connections
n=recvfrom(sock,buffer,512,0,(struct sockaddr*)&from,&length);
// if some client sent request i will assign new thread to serve it
pthread_create(&thread_id[str_cnt], NULL, serve,(void*)(&cli[str_cnt]));
}
function serve(args)
{
while(1)
{
// sendind data to that client
sendto(sockfd, buf, BUFSIZE, 0, (struct sockaddr *) &clientaddr,clientlen);
//now wating for ack from the client
sendto(sockfd, buf, BUFSIZE, 0, (struct sockaddr *) &clientaddr,clientlen);
}
}
}