EthernetUDP.available()
描述
回传目前收到的封包所包含的资料量,这些资料都是目前可以读取的。要使用 available() 前必须先呼叫 UDP.parsePacket() ,否则 available() 的呼叫会失败。
available() 是从 Stream 继承而来。
语法
Udp.available()
参数
无参数
回传
int:目前可以读取的资料量,以位元组为单位
范例
#include <Ethernet.h>
#include <EthernetUdp.h>
// 输入本地端的 IP 位址
IPAddress ip(192, 168, 1, 177);
// 要监听的本地端埠编号
unsigned int localPort = 8888;
// 创建一个 EthernetUDP 物件,我们可以藉由这个物件收发 UDP 的封包
EthernetUDP Udp;
// 要拿来存放资料的阵列
char packetBuffer[UDP_TX_PACKET_MAX_SIZE];
void setup() {
// 开始 Ethernet 和 EthernetUDP
Ethernet.begin(NULL,ip);
Udp.begin(localPort);
}
void loop() {
int packetSize = Udp.parsePacket();
if(Udp.available())
{
Serial.print("Received packet of size ");
Serial.println(packetSize);
Serial.print("From ");
IPAddress remote = Udp.remoteIP();
for (int i =0; i < 4; i++)
{
Serial.print(remote[i], DEC);
if (i < 3)
{
Serial.print(".");
}
}
Serial.print(", port ");
Serial.println(Udp.remotePort());
// 读取透过 UDP 接收到的资料并且放到 packetBuffer
Udp.read(packetBuffer,UDP_TX_PACKET_MAX_SIZE);
Serial.println("Contents:");
Serial.println(packetBuffer);
}
}
See Also
The text of the 86Duino reference is a modification of the Arduino reference, and is licensed under a Creative Commons Attribution-ShareAlike 3.0 License. Code samples in the reference are released into the public domain.
