首页 > 解决方案 > 想问一下kea dhcp服务器的使用方法,希望有人能帮帮我

问题描述

我想修改dhcp4源码,通知ddns服务器在分配租约时设置动态域名,但是我在dhcp4_srv.cc中添加了nanomsg语句。当我的 nanomsg 执行关机或关闭时,dhcp4 服务会自动关闭。这就是为什么没有其他办法实现动态域名的原因(我的动态域名主要是把前台设置的字段和mac地址和IP地址发送给ddns服务器,也可能是前台的登录账号)。有人可以帮助我吗?非常感谢您。

if (lease) {
// We have a lease! Let's set it in the packet and send it back to
// the client.
// 我们有租约! 让我们在数据包中进行设置,然后将其发送回客户端。
if (fake_allocation) {
//租约建议
LOG_INFO(lease4_logger, DHCP4_LEASE_ADVERT)
.arg(query->getLabel())
.arg(lease->addr_.toText());
} else {
//成功授予租约
LOG_INFO(lease4_logger, DHCP4_LEASE_ALLOC)
.arg(query->getLabel())
.arg(lease->addr_.toText())
.arg(lease->valid_lft_);

int rc = 0;
int pair_socket = 0;
int str_len = 0;
char buf[256] = { 0 };
char buf1[256] = { 0 };
int timeo = 5000;
//计算长度
str_len = strlen(HELLOWORLD);
//初始化socket
pair_socket = nn_socket(1, NN_PAIR);
if (pair_socket == -1) {
    printf("nn_socket failed! error: %s.\n", nn_err_strerror(errno));
    //system("pause");
    nn_err_abort();
    //return 0;
}
//设置超时
rc = nn_setsockopt(pair_socket, 0, NN_SNDTIMEO, &timeo, sizeof(timeo));
rc = nn_setsockopt(pair_socket, 0, NN_RCVTIMEO, &timeo, sizeof(timeo));
//连接服务端
rc = nn_connect(pair_socket, SOCKET_ADDRESS2);
if (rc < 0) {
    printf("bind failed! error: %s.\n", nn_err_strerror(errno));
    //system("pause");
    nn_err_abort();
    //return 0;
}
//将hello world复制到buf中
memcpy(buf, HELLOWORLD, str_len);

//发送数据
rc = nn_send(pair_socket, buf, str_len, 0);
if (rc < 0) {
    printf("nn_send failed! error: %s.rc = %d.\n", nn_err_strerror(errno), rc);
}
//打印
printf("send:%s\n", buf);
//这里主要是测试使用,平时项目不要使用标签
//接收数据
rc = nn_recv(pair_socket, buf1, 256, 0);
if (rc < 0) {
    printf("nn_recv failed! error: %s.rc = %d.\n", nn_err_strerror(errno), rc);

}
//打印
printf("recv:%s\n", buf1);
memset(buf1, 0, 256);
//Sleep(1000);

//关闭套接字
rc = nn_shutdown(pair_socket, 1);
if (rc != 1) {
    printf("nn_close failed! error: %s.\n", nn_err_strerror(errno));
    //system("pause");
    nn_err_abort();
    //return 0;
}
std::cout << "testtttttttttttttttttttttttttttttttttt "
          << "hostnameeeeeeeeeeeeeeeeeeeeeeeeeeeeee:" << lease->hostname_ << std::endl;
std::cout << "testtttttttttttttttttttttttttttttttttt "
          << "ipppppppppppppppppppppppppppppppppppp:" << lease->addr_.toText() << std::endl;

std::cout << "lease ALLOC  " << __LINE__ << "  file name  " << __FILE__
          << "  HOST:" << lease->hostname_ << std::endl;
std::cout << "lease ALLOC  " << __LINE__ << "  file name  " << __FILE__
          << "  IP:" << lease->addr_.toText() << std::endl;


}

标签: cdhcp

解决方案


听起来您需要一些有关 Internet Systems Consortium 开发的 KEA软件一般信息https : //kea.isc.org/您在代码中遇到的具体问题。一旦您能够解释您在代码中遇到的问题,您就可以使用您的详细信息编辑您的问题,并且您更有可能从该站点获得更有意义的答案。


推荐阅读