自定义tcp over udp socket bind

时间:2015-11-20 23:50:24

标签: c sockets tcp bind

我正在尝试通过udp建立基本可靠的连接。我已经定义了自定义绑定函数,它接受与TCP绑定相同的参数,但在传递参数时我的函数中得到了如下错误消息:

  

bind()失败:协议不支持的地址族   我已经在一个文件中定义了r_bind函数,并从下一个文件中访问。功能如下:

int r_bind(int sockfd, struct sockaddr *addr,socklen_t addrlen){        
    return bind(sockfd, (struct sockaddr*) &addr, addrlen);
}
typedef struct brp_socket{
    int sockfd;
    struct sockaddr_in brp_serveraddr;
    struct sockaddr_in brp_useraddr;
}brp_socket;

我已经从user1.c文件调用了。套接字已成功创建,但在绑定期间我收到错误。我做了以下函数调用。

  brp_socket socket_list[BRP_MAX_SOCKET];
  int socket_index = 0;
  int servSock; // Socket descriptor for server

  servSock = r_socket(AF_INET, SOCK_BRP, 0)  
  socket_list[socket_index].sockfd = servSock;  
  memset(&socket_list[socket_index].brp_serveraddr, 0, sizeof(socket_list[socket_index].brp_serveraddr)); // Zero out structure
  socket_list[socket_index].brp_serveraddr.sin_family = AF_INET; // IPv4 address family
  socket_list[socket_index].brp_serveraddr.sin_addr.s_addr = htonl(INADDR_ANY); // Any incoming interface
  socket_list[socket_index].brp_serveraddr.sin_port = htons(servPort); // Local port

  if (r_bind(socket_list[socket_index].sockfd, (struct sockaddr*)&(socket_list[socket_index].brp_serveraddr), sizeof(socket_list[socket_index].brp_serveraddr)) < 0)



#define SOCK_BRP 1     
 int r_socket(int domain, int type, int protocol){
        if(type == 1)
            {
            return socket(domain,SOCK_DGRAM,protocol);      
            }

    }

这里BRP_SOCK是自定义协议类型。 任何人都可以建议我在哪里弄错了吗?

0 个答案:

没有答案