我的程序遇到了一个奇怪的问题。
我一直在使用UDP来传输文件,使用标准的sendto和recvfrom。
我让服务器和客户端在程序中多次来回通信。
我刚刚在服务器的代码中添加了一个新的sendto调用,它在执行时给了我这个错误。
Address family not supported by protocol.
这来自我的sendto函数。
以下是它正在执行的代码:
if ((numbytes = sendto(sockfd,sDropped,strlen(sDropped), 0,
(struct sockaddr *)&their_addr, p->ai_addrlen)) == -1) {
perror("talker: sendto");
exit(1);
}
正如我所说,这个代码在程序的早期大约有4次,所以我确信我已经把所有东西都搞定了。
是否有人熟悉此问题,并且可以就我的程序中可能产生此问题的内容提供一些见解?
感谢。
答案 0 :(得分:9)
看看他们是否设置了his_addr.sin_family,只是因为这个错误而浪费了几个小时的同一条消息。
答案 1 :(得分:0)
使用强制转换意味着 their_addr
中的任何旧垃圾都会编译。
(struct sockaddr *)&their_addr
their_addr
已经是一个指针了吗?所以 &their_addr
给出了一个指向指针的指针?