用户工具

站点工具


reference:library:ethernetudpread

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

reference:library:ethernetudpread [2017/04/07 10:03] (当前版本)
行 1: 行 1:
 +[[zh:​reference:​librariy:​ethernet|Ethernet]]:UDP CLASS
 +====== UDP.read() ======
  
 +===== 描述 =====
 +
 +从指定的缓冲区中读取的UDP数据。如果没有给出参数,它会返回缓冲区中的下一个字符。
 +
 +此函数只能调用在成功调用 UDP.parsePacket()之后。
 +===== 语法 =====
 +
 +UDP.read();
 +\\ UDP.read(packetBuffer,​ MaxSize); ​
 +===== 参数 =====
 +
 +packetBuffer:用以接收包的缓冲区(char)
 +\\ MAXSIZE:缓冲区的最大容量(int)
 +===== 返回 =====
 +
 +字符(char):返回缓冲区的字符
 +===== 例子 =====
 +<code cpp>
 +#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);​
 +  }
 +}
 +</​code>​
 +
 +
 +[[zh:​reference:​librariy:​main|返回主菜单]]
reference/library/ethernetudpread.txt · 最后更改: 2017/04/07 10:03 (外部编辑)