62 lines
1.6 KiB
C++
62 lines
1.6 KiB
C++
#include <NativeEthernet.h>
|
|
#include <NativeEthernetServer.h>
|
|
|
|
byte mac[] = { 0x04, 0xE9, 0xE5, 0x10, 0x00, 0x02 };
|
|
IPAddress ip(192, 168, 1, 101);
|
|
const int localPort = 8888;
|
|
|
|
EthernetServer server(localPort);
|
|
EthernetClient client;
|
|
byte packetBuffer[256];
|
|
|
|
void setup() {
|
|
Serial.begin(115200);
|
|
//while (!Serial);
|
|
|
|
Serial.println("Initializing Ethernet...");
|
|
Ethernet.begin(mac, ip);
|
|
|
|
if (Ethernet.hardwareStatus() == EthernetNoHardware) {
|
|
Serial.println("Ethernet hardware not found!");
|
|
while (true);
|
|
}
|
|
|
|
if (Ethernet.linkStatus() == LinkOFF) {
|
|
Serial.println("Ethernet cable not connected!");
|
|
}
|
|
|
|
server.begin();
|
|
Serial.println("TCP Server Ready. Waiting for connections...");
|
|
}
|
|
|
|
void loop() {
|
|
if (!client || !client.connected()) {
|
|
client = server.available();
|
|
if (client) {
|
|
Serial.println("Client connected!");
|
|
}
|
|
return;
|
|
}
|
|
|
|
static int bytesReceived = 0;
|
|
|
|
while (client.available()) { // Keep reading while data is available
|
|
int byteRead = client.read(packetBuffer + bytesReceived, 256 - bytesReceived);
|
|
if (byteRead > 0) {
|
|
bytesReceived += byteRead;
|
|
}
|
|
|
|
if (bytesReceived == 256) { // Full packet received
|
|
Serial.print("Received full 256-byte packet: ");
|
|
|
|
for (int i = 0; i < 256; i++) {
|
|
Serial.print(packetBuffer[i], DEC);
|
|
Serial.print(" ");
|
|
}
|
|
Serial.println();
|
|
|
|
bytesReceived = 0; // Reset for the next packet
|
|
}
|
|
}
|
|
}
|