Вы использовали sendto
неправильно. В третьем аргументе вы должны указать количество байтов, которые вы собираетесь отправить, но у вас есть:
n=sendto(sockfd,data,n,0,(struct sockaddr *)&setOfClient[k],(char*)(setOfClient+1)-(char*)setOfClient);
где n
на первой итерации присваивается 0
из-за более раннего int n=0;
. Таким образом, возвращаемое значение равно 0
и никогда не изменяется, потому что n
всегда используется в цикле.
Таким образом, использование strlen(data)
вместо n
в качестве аргумента при вызове sendto
и использование другой переменной, которой присвоено значение sendto
return, будет более целесообразным.
P. S. Полезно читать справочные страницы, они, как правило, предоставляют вам большинство деталей, которые вы хотели бы знать, поэтому man 2 sendto
.