wlan端口服务器无响应,wlan项目遇到的问题,总结

现在我使用的设备都是Aruba MSR,MSA系列产品

debug dhcp调试DHCP协商过程

若AP能够不能正常获得IP地址,可能是ONU、OLT核心网的问题

通过查找,排错

调试过程是:AP能够发送DHCPdiscover

AC响应AP,发送DHCPoffer

正常情况下,AP再向AC发送request

AC响应AP,发送ACK

#########################################################################

今天试了下,站在ONU上都能PING通互连的地址,但AP就是不上线,还出现这样的(经调试):

%DHCP-449511: can't find layer3 ip-pool, relay agent ip = 0x0ac0d801!

cannot found available ip-pool

经过一天的协商,双方都在调试,发现原来是ONU的IP地址掩码由26写成24了

###########################################################################

AC上的时间与现在的北京时间不同步

第一步:先在AC的WEB方式上 基本配置 ---NTP服务 把NTP服务器和NTP客户端都关闭,保存退出

第二步:在AC的业务板上,手动设置时间

格式如下:clock set  2011 06 21 2 8 57 00

2011表示年

06表示月

21表示日

2表示星期二

8表示时

57表示分

00表示秒

########################################################################

debug dhcp调试出现这样的问题,是由于地址池没有配置

DHCP请求包通过指定的端口进来,找到匹配IP地址网段,才能正确找到地址池

如10.10.10.0的网段,只能找10.10.10.0的网段的地址池

若是10.10.10.0的网段来发送DHCP请求,而地址是10.10.11.0的地址池,则提示以下信息:

%DHCP-929852: received DISCOVER packet

%DHCP-929852: mac = 00:17:7b:2d:67:95 , vlan = 3582, cvlan = 4095, mod = 1, port = 4, xid = 0x1972cc68

ciaddr = 0x00000000, yiaddr = 0x00000000, siaddr = 0x00000000, giaddr = 0x0ac0ce01, rqstip = 0x00000000

option60code = 23631, no option43

%DHCP-929852: can't find layer3 ip-pool, relay agent ip = 0x0ac0ce01!

%DHCP-929852: cannot found available ip-pool

%DHCP-929862: received DISCOVER packet

%DHCP-929862: mac = 00:17:7b:2d:9a:2c , vlan = 3582, cvlan = 4095, mod = 1, port = 4, xid = 0x54a4e1ef

ciaddr = 0x00000000, yiaddr = 0x00000000, siaddr = 0x00000000, giaddr = 0x0ac0ce01, rqstip = 0x00000000

option60code = 23631, no option43

%DHCP-929862: can't find layer3 ip-pool, relay agent ip = 0x0ac0ce01!

%DHCP-929862: cannot found available ip-pool

%DHCP-929865: received DISCOVER packet

%DHCP-929865: mac = 00:17:7b:2d:67:95 , vlan = 3582, cvlan = 4095, mod = 1, port = 4, xid = 0x1972cc68

ciaddr = 0x00000000, yiaddr = 0x00000000, siaddr = 0x00000000, giaddr = 0x0ac0ce01, rqstip = 0x00000000

option60code = 23631, no option43

%DHCP-929865: can't find layer3 ip-pool, relay agent ip = 0x0ac0ce01!

%DHCP-929865: cannot found available ip-pool

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,我可以回答这个问题。以下是一个简单的Arduino代码,可以实现WLAN远程控制继电器开关: #include <ESP8266WiFi.h> const char* ssid = "your_SSID"; // 你的WiFi名称 const char* password = "your_PASSWORD"; // 你的WiFi密码 const char* host = "your_HOSTNAME"; // 你的远程服务器的主机名 const int port = 80; // 远程服务器端口号 void setup() { Serial.begin(960); delay(10); // 连接WiFi Serial.println(); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); } void loop() { // 发送HTTP请求 WiFiClient client; if (!client.connect(host, port)) { Serial.println("connection failed"); return; } client.print("GET /relay/on HTTP/1.1\r\n"); client.print("Host: "); client.print(host); client.print("\r\n"); client.print("Connection: close\r\n"); client.print("\r\n"); // 等待响应 while (client.connected()) { if (client.available()) { String line = client.readStringUntil('\r'); Serial.print(line); } } Serial.println(); Serial.println("closing connection"); delay(500); // 等待5秒钟 // 发送HTTP请求 if (!client.connect(host, port)) { Serial.println("connection failed"); return; } client.print("GET /relay/off HTTP/1.1\r\n"); client.print("Host: "); client.print(host); client.print("\r\n"); client.print("Connection: close\r\n"); client.print("\r\n"); // 等待响应 while (client.connected()) { if (client.available()) { String line = client.readStringUntil('\r'); Serial.print(line); } } Serial.println(); Serial.println("closing connection"); delay(500); // 等待5秒钟 } 请注意,你需要将代码中的"your_SSID"、"your_PASSWORD"和"your_HOSTNAME"替换为你自己的WiFi名称、密码和远程服务器的主机名。此外,你还需要在远程服务器上设置一个简单的Web服务器,以便接收HTTP请求并控制继电器的开关。 ### 回答2: 当然可以帮你写一个Arduino的代码来实现WLAN远程控制继电器开关。首先,你需要确保已经连接了一个WLAN模块(例如ESP8266)到你的Arduino板上,并且已经连接好了继电器模块。 以下是一个简单的代码示例: ```C++ #include <ESP8266WiFi.h> const char* ssid = "your_SSID"; //填入你的WLAN名称 const char* password = "your_PASSWORD"; //填入你的WLAN密码 const int relayPin = 2; //填入继电器控制引脚号 WiFiServer server(80); void setup() { pinMode(relayPin, OUTPUT); digitalWrite(relayPin, HIGH); // 初始化继电器为关闭状态 Serial.begin(9600); delay(10); WiFi.begin(ssid, password); //连接WLAN while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); server.begin(); } void loop() { WiFiClient client = server.available(); if (!client) { return; } String request = client.readStringUntil('\r'); Serial.println(request); client.flush(); if (request.indexOf("/on") != -1) { digitalWrite(relayPin, LOW); //打开继电器 } else if (request.indexOf("/off") != -1) { digitalWrite(relayPin, HIGH); //关闭继电器 } client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println(""); client.println("<!DOCTYPE HTML>"); client.println("<html>"); client.println("<body>"); if (digitalRead(relayPin) == LOW) { client.println("<h1>The relay is ON</h1>"); } else { client.println("<h1>The relay is OFF</h1>"); } client.println("<p><a href=\"/on\">Turn ON</a></p>"); client.println("<p><a href=\"/off\">Turn OFF</a></p>"); client.println("</body>"); client.println("</html>"); delay(10); } ``` 这段代码通过建立一个Web服务器,监听端口80,可以通过访问`http://ip_address/on`或`http://ip_address/off`的方式来远程控制继电器的开关状态。其中,`ip_address`是你的Arduino所连接WLAN的IP地址。 希望以上的解答对你有所帮助,如果还有其他问题,请随时提问。 ### 回答3: 当然可以!以下是一个使用Arduino编写的简单代码,可以实现通过WLAN远程控制继电器开关的功能。 ``` #include <ESP8266WiFi.h> #include <WiFiClient.h> const char* ssid = "你的WiFi名字"; // 你的WiFi名称 const char* password = "你的WiFi密码"; // 你的WiFi密码 WiFiServer server(80); // 使用80端口 // 继电器连接到引脚D1 const int relayPin = D1; void setup() { Serial.begin(115200); pinMode(relayPin, OUTPUT); digitalWrite(relayPin, LOW); // 连接WiFi WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.print("."); } Serial.println(""); Serial.println("WiFi已连接"); server.begin(); // 启动服务器 Serial.println("服务器已启动"); Serial.println(WiFi.localIP()); // 打印赋予的IP地址 } void loop() { WiFiClient client = server.available(); if (!client) { return; } // 等待客户端发送请求 Serial.println("新客户端连接"); while (!client.available()) { delay(1); } // 读取请求 String request = client.readStringUntil('\r'); Serial.println(request); client.flush(); // 判断请求是否是开关命令 if (request.indexOf("/on") != -1) { digitalWrite(relayPin, HIGH); } else if (request.indexOf("/off") != -1) { digitalWrite(relayPin, LOW); } // 向客户端发送响应 client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println(""); client.println("<!DOCTYPE HTML>"); client.println("<html>"); client.println("<body>"); client.println("<h1>继电器控制</h1>"); client.println("<p>点击下面的链接以控制继电器:</p>"); client.println("<a href=\"/on\">开</a>"); client.println("<a href=\"/off\">关</a>"); client.println("</body>"); client.println("</html>"); delay(100); Serial.println("客户端断开"); Serial.println(""); } ``` 在以上代码中,你需要修改`ssid`和`password`变量的值,将其修改成你的WiFi名称和密码。 在你的Arduino板上将继电器连接到D1引脚。 上传代码到Arduino板后,打开串监视器,你将看到板子连上了WiFi,并显示相应的IP地址。 现在,你可以使用浏览器在同一个网络下访问此IP地址。页面上将显示一个开关按钮,通过点击按钮就可以控制继电器的开关。 希望这可以帮到你!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值