协议不支持地址族?发送至

时间:2011-10-20 23:41:25

标签: c networking udp

我的程序遇到了一个奇怪的问题。

我一直在使用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次,所以我确信我已经把所有东西都搞定了。

是否有人熟悉此问题,并且可以就我的程序中可能产生此问题的内容提供一些见解?

感谢。

2 个答案:

答案 0 :(得分:9)

看看他们是否设置了his_addr.sin_family,只是因为这个错误而浪费了几个小时的同一条消息。

答案 1 :(得分:0)

使用强制转换意味着 their_addr 中的任何旧垃圾都会编译。

(struct sockaddr *)&their_addr

their_addr 已经是一个指针了吗?所以 &their_addr 给出了一个指向指针的指针?