我试图用C制作一个简单的服务器,但是我的程序以“地址错误”结束。我的目标是继续通过UDP接收消息,并将其发送到数组的每个地址。 这是数组(和计数器):
struct sockaddr_in add[MAX_CLIENTS]; clients = 0;
这是我添加更多客户的方式:
add[clients] = echoClntAddr; clients++;
echoClntAddr
当然是struct sockaddr_in
;在我使用recvfrom()
函数从其接收消息之后执行此行。
这是我尝试进行广播的地方:
for(int i=0; i < clients; i++){
printf("\n Sending to client %ul",add[i].sin_addr.s_addr);
if(sendto(sock, m, echoStringLen, 0, (struct sockaddr *) &add[i], sizeof(add[i])) != echoStringLen)
die("\n Error in sendto()");
}
怎么了?我错误地存储了地址或将错误的参数传递给sendto()
?