- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 Qt4.8 创建一个简单的 DHCP 客户端。
我有两个主机:
IP 地址为 inet addr 的服务器:1.5.1.10
Bcast:1.5.1.255
Mask:255.255.255.0
和 isc-dhcp-server
向客户端发送以下参数:
IPs: 1.5.1.11-100 Bcast:1.5.255.255 Mask:255.255.0.0
具有在启动时派生的参数的客户端 - inet addr:1.5.1.14
Bcast:1.5.255.255
Mask:255.255.0.0
在客户端上,我试图向 DHCP 服务器询问(在我的程序中)新选项。服务器已发送选项,但我的程序无法从服务器接收任何数据,除了直接发送到客户端地址(1.5.1.14:68
)的数据。
对于客户端,我编译了 Open DHCP Locate,它工作正常。当我在客户端运行 tcpdump -i eth0 udp port 68 -e -n -vvvv -X
时,它显示来自服务器的数据包。我认为 QUdpSocket 需要一些参数来接收这些数据包。这些参数是什么?
我试过像这样创建我的套接字:
udpSocket = new QUdpSocket(this);
//udpSocket->bind(QHostAddress(QString("1.5.1.14")), 68);
qDebug() << "bind" << udpSocket->bind(QHostAddress::Any, 68, QUdpSocket::ShareAddress);
//qDebug() << "bind" << udpSocket->bind(QHostAddress::Broadcast, 68);
//qDebug() << "joinMulticastGroup" << udpSocket->joinMulticastGroup(QHostAddress(QString("1.5.255.255")));
//udpSocket->setMulticastInterface(QNetworkInterface::interfaceFromName(QString("eth0")));
// int optval = 1;
// qDebug() << "SO_BROADCAST" << setsockopt(udpSocket->socketDescriptor(), SOL_SOCKET, SO_BROADCAST, &optval, sizeof(optval));
// const char dev[] = "eth0";
// qDebug() << "SO_BINDTODEVICE" << setsockopt(udpSocket->socketDescriptor(), SOL_SOCKET, SO_BINDTODEVICE, dev, sizeof(dev) );
各种组合,但没有收到。
从服务器端登录,cmds是:
#tcpdump -i eth1 udp port 67 or port 68 -e -n -X
和
#dhcpdump -i eth1
.
10:30:15.775100 84:eb:18:e8:59:b2 > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 285: (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto UDP (17), length 271)
1.5.1.14.68 > 255.255.255.255.67: [udp sum ok] BOOTP/DHCP, Request from 31:32:33:34:35:36, length 243, Flags [none] (0x0000)
Client-Ethernet-Address 31:32:33:34:35:36
Vendor-rfc1048 Extensions
Magic Cookie 0x63825363
DHCP-Message Option 53, length 1: Discover
0x0000: 4500 010f 0000 4000 4011 37cc 0105 010e E.....@.@.7.....
0x0010: ffff ffff 0044 0043 00fb 6dda 0101 0600 .....D.C..m.....
0x0020: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0030: 0000 0000 0000 0000 3132 3334 3536 0000 ........123456..
0x0040: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0050: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0060: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0070: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0080: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0090: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x00a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x00b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x00c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x00d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x00e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x00f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0100: 0000 0000 0000 0000 6382 5363 3501 01 ........c.Sc5..
10:30:16.776570 10:fe:ed:05:f9:53 > 31:32:33:34:35:36, ethertype IPv4 (0x0800), length 342: (tos 0x10, ttl 128, id 0, offset 0, flags [none], proto UDP (17), length 328)
1.5.1.10.67 > 1.5.1.33.68: [udp sum ok] BOOTP/DHCP, Reply, length 300, Flags [none] (0x0000)
Your-IP 1.5.1.33
Server-IP 1.5.1.10
Client-Ethernet-Address 31:32:33:34:35:36
Vendor-rfc1048 Extensions
Magic Cookie 0x63825363
DHCP-Message Option 53, length 1: Offer
Server-ID Option 54, length 4: 1.5.1.10
Lease-Time Option 51, length 4: 864000
Subnet-Mask Option 1, length 4: 255.255.0.0
Default-Gateway Option 3, length 4: 1.5.1.10
BR Option 28, length 4: 1.5.255.255
NTP Option 42, length 4: 1.5.1.10
END Option 255, length 0
PAD Option 0, length 0, occurs 20
0x0000: 4510 0148 0000 0000 8011 3561 0105 010a E..H......5a....
0x0010: 0105 0121 0043 0044 0134 0c29 0201 0600 ...!.C.D.4.)....
0x0020: 0000 0000 0000 0000 0000 0000 0105 0121 ...............!
0x0030: 0105 010a 0000 0000 3132 3334 3536 0000 ........123456..
0x0040: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0050: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0060: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0070: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0080: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0090: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x00a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x00b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x00c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x00d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x00e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x00f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0100: 0000 0000 0000 0000 6382 5363 3501 0236 ........c.Sc5..6
0x0110: 0401 0501 0a33 0400 0d2f 0001 04ff ff00 .....3.../......
0x0120: 0003 0401 0501 0a1c 0401 05ff ff2a 0401 .............*..
0x0130: 0501 0aff 0000 0000 0000 0000 0000 0000 ................
0x0140: 0000 0000 0000 0000
---------------------------------------------------------------------------
TIME: 2016-09-19 10:30:15.853
IP: 1.5.1.14 (84:eb:18:e8:59:b2) > 255.255.255.255 (ff:ff:ff:ff:ff:ff)
OP: 1 (BOOTPREQUEST)
HTYPE: 1 (Ethernet)
HLEN: 6
HOPS: 0
XID: 00000000
SECS: 0
FLAGS: 0
CIADDR: 0.0.0.0
YIADDR: 0.0.0.0
SIADDR: 0.0.0.0
GIADDR: 0.0.0.0
CHADDR: 31:32:33:34:35:36:00:00:00:00:00:00:00:00:00:00
SNAME: .
FNAME: .
OPTION: 53 ( 1) DHCP message type 1 (DHCPDISCOVER)
OPTION: 54 ( 4) Server identifier 1.5.1.10
OPTION: 51 ( 4) IP address leasetime 864000 (1w3d)
---------------------------------------------------------------------------
TIME: 2016-09-19 10:30:16.855
IP: 1.5.1.10 (10:fe:ed:5:f9:53) > 1.5.1.33 (31:32:33:34:35:36)
OP: 2 (BOOTPREPLY)
HTYPE: 1 (Ethernet)
HLEN: 6
HOPS: 0
XID: 00000000
SECS: 0
FLAGS: 0
CIADDR: 0.0.0.0
YIADDR: 1.5.1.33
SIADDR: 1.5.1.10
GIADDR: 0.0.0.0
CHADDR: 31:32:33:34:35:36:00:00:00:00:00:00:00:00:00:00
SNAME: .
FNAME: .
OPTION: 53 ( 1) DHCP message type 2 (DHCPOFFER)
OPTION: 54 ( 4) Server identifier 1.5.1.10
OPTION: 51 ( 4) IP address leasetime 864000 (1w3d)
OPTION: 1 ( 4) Subnet mask 255.255.0.0
OPTION: 3 ( 4) Routers 1.5.1.10
OPTION: 28 ( 4) Broadcast address 1.5.255.255
OPTION: 42 ( 4) NTP servers 1.5.1.10
最佳答案
您首先将套接字绑定(bind)到您要通过其广播的接口(interface),在端口 68 上。设置广播选项。发送 DHCP discovery使用 writeDatagram
将数据包发送到广播地址(端口 67) .然后你只需等待对套接字的回复,你用 readDatagram
读取它.
这应该是所有需要的。
如果您没有在合理的时间内得到回复,您当然需要能够处理超时。请记住,UDP 是不可靠的。
您的程序还需要以提升的权限运行才能绑定(bind)到特权端口号。
关于c++ - Qt4.8 如何通过 QUdpSocket 接收任何数据包又名嗅探 DHCP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39572362/
我正在构建一个游戏,例如 Same Game ,当我必须创建一个新关卡时,我刚刚运行了一个算法来用 N 种颜色填充板子,这个算法随机填充板子,但显然以这种方式生成的关卡并不是都有解决方案。 我必须做一
有两个 TFLearn 项目 TF Learn (aka Scikit Flow) https://github.com/tensorflow/tensorflow/tree/master/tenso
我正在尝试使用代码从 NSDictionary 中解析一个整数 [activeItem setData_id:[[NSString stringWithFormat:@"%@", [dict valu
是否有在线资源描述 VC10 与 VC9 相比代码生成的变化? 我不是在谈论 c++0x 和其他不错的功能(例如内置 static_assert),也不是在谈论精致的 UI。我需要知道的是,由于优化、
那里。我是 Swift 的初学者,正在尝试将旧程序转换为 Swift3。我设法修复了一堆错误,但我无法使该功能正常工作。 fileprivate func extractEntitlements(_
我正在尝试实现 Easy Game Center link但我得到这个错误: Cannot convert value of type 'NSRange' (aka 'NSRange') to exp
我是 Swift 的新手,我正在尝试按照 lynda.com 上的类(class)编写一个简单的类(class)此代码在视频中运行良好,但在我的系统上出现错误。 protocol JSONDecoda
我的代码中有一个错误,例如“无法将类型‘NSRange’(又名‘_NSRange’)的值转换为预期的参数类型‘Range’(又名‘Range’)”,但我不知道如何解决这个问题请任何人帮助我? 我在这里
检查字符串字符的范围时出现此错误... @objc func textField(textField: UITextField, shouldChangeCharactersInRange range
我正在尝试用属性字符串替换子字符串。以下是我的代码。 let searchText = self.searchBar.text! let name = item.firstName ?? "" let
string convert(string name) { string code = name[0]; ... } 我从这一行得到“没有从'value_type'(又名'char')到'st
标题说明了一切,我相信。我只是好奇 () -> () 是否充当函数的参数... class Test { var isAwesome = true func loadData (callbac
我正在编写这个很棒的应用程序,至少我认为它很棒,在 C 中与 GObject 的完美结合,过了一段时间我开始遇到这个非常非常奇怪的错误。我也相信已经注意到它并不总是出现。然而,这可能只是 IDE 的错
我一直在尝试使用类型族来抽象 UI 工具包。当我尝试使用 HLists (http://homepages.cwi.nl/~ralf/HList/) 来改进 API 时,我陷入了困境。 我的 API
在 Scala 中,as explained in the PR that introduced it , parasitic允许偷窃 execution time from other thread
我在网上看到过这个关于加载效果的回车示例,但我无法正确理解它。为什么它必须是 2 \rLoading 而不是 1?有人可以给我解释一下吗? for (int j = 0; j < 3; j++) {
我有一个字符串列表 strs = [ 'foo', 'bar' ] 和一些字典 foo = {'a': 1, 'b': 2}, bar = {'a': 3, 'b': 4}。我想使用 with_ite
我有一个由许多点组成的LineString(坐标字符串),我想计算沿线最近的距离(从第一个点到最后一个点,方向性很重要)到一个点,就像这样说的:"project()" calculation 如果我不
所以最近我确实为我的业务购买了一些模板。它们基于 HTML/CSS/JQUERY/JS/PHP。 问题如下:在我的领域,并发率非常高,人们下载模板并自己使用它们是很常见的。由于我确实为它们付出了很多,
我认为这很容易找到预制的,但似乎我在网上找到的任何解决方案都只能解决部分问题。 我想对用户提供的文件名列表进行排序(这些文件大多以人和/或地址命名),有时使用不同的语言(主要是德语,带有一些法语和意大
我是一名优秀的程序员,十分优秀!