用户工具

站点工具


reference:library:ethernetudpread

Ethernet:UDP CLASS

UDP.read()

描述

从指定的缓冲区中读取的UDP数据。如果没有给出参数,它会返回缓冲区中的下一个字符。

此函数只能调用在成功调用 UDP.parsePacket()之后。

语法

UDP.read();
UDP.read(packetBuffer, MaxSize);

参数

packetBuffer:用以接收包的缓冲区(char)
MAXSIZE:缓冲区的最大容量(int)

返回

字符(char):返回缓冲区的字符

例子

#include <SPI.h>
#include <Ethernet.h>
#include <EthernetUdp.h>
 
//为你的控制器输入MAC地址和IP地址。
// IP地址将依赖于你的本地网络
byte mac[] = { 
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192, 168, 1, 177);
unsigned int localPort = 8888;      //本地监听端口
 
// EthernetUDP的实例,让我们通过UDP发送和接收数据包
EthernetUDP UDP;
 
char packetBuffer[UDP_TX_PACKET_MAX_SIZE]; //用以接收包的缓冲区
 
void setup() {
  //启动以太网和UDP:
  Ethernet.begin(mac, ip);
  Udp.begin(localPort);
 
}
 
void loop() {
 
  int packetSize = Udp.parsePacket();
  if(packetSize)
  {
    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());
 
    //读取数据包存到packetBufffer
    Udp.read(packetBuffer,UDP_TX_PACKET_MAX_SIZE);
    Serial.println("Contents:");
    Serial.println(packetBuffer);
  }
}

返回主菜单

reference/library/ethernetudpread.txt · 最后更改: 2017/04/07 10:03 (外部编辑)