root / arduino-1.0 / libraries / Ethernet / examples / DhcpChatServer / DhcpChatServer.ino @ 58d82c77
History | View | Annotate | Download (2.17 KB)
1 |
/* |
---|---|
2 |
DHCP Chat Server |
3 |
|
4 |
A simple server that distributes any incoming messages to all |
5 |
connected clients. To use telnet to your device's IP address and type. |
6 |
You can see the client's input in the serial monitor as well. |
7 |
Using an Arduino Wiznet Ethernet shield. |
8 |
|
9 |
THis version attempts to get an IP address using DHCP |
10 |
|
11 |
Circuit: |
12 |
* Ethernet shield attached to pins 10, 11, 12, 13 |
13 |
|
14 |
created 21 May 2011 |
15 |
by Tom Igoe |
16 |
Based on ChatServer example by David A. Mellis |
17 |
|
18 |
*/ |
19 |
|
20 |
#include <SPI.h> |
21 |
#include <Ethernet.h> |
22 |
|
23 |
// Enter a MAC address and IP address for your controller below. |
24 |
// The IP address will be dependent on your local network. |
25 |
// gateway and subnet are optional: |
26 |
byte mac[] = { |
27 |
0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02 }; |
28 |
IPAddress ip(192,168,1, 177); |
29 |
IPAddress gateway(192,168,1, 1); |
30 |
IPAddress subnet(255, 255, 0, 0); |
31 |
|
32 |
// telnet defaults to port 23 |
33 |
EthernetServer server(23); |
34 |
boolean gotAMessage = false; // whether or not you got a message from the client yet |
35 |
|
36 |
void setup() { |
37 |
// open the serial port |
38 |
Serial.begin(9600); |
39 |
// start the Ethernet connection: |
40 |
Serial.println("Trying to get an IP address using DHCP"); |
41 |
if (Ethernet.begin(mac) == 0) { |
42 |
Serial.println("Failed to configure Ethernet using DHCP"); |
43 |
// initialize the ethernet device not using DHCP: |
44 |
Ethernet.begin(mac, ip, gateway, subnet); |
45 |
} |
46 |
// print your local IP address: |
47 |
Serial.print("My IP address: "); |
48 |
ip = Ethernet.localIP(); |
49 |
for (byte thisByte = 0; thisByte < 4; thisByte++) { |
50 |
// print the value of each byte of the IP address: |
51 |
Serial.print(ip[thisByte], DEC); |
52 |
Serial.print("."); |
53 |
} |
54 |
Serial.println(); |
55 |
// start listening for clients |
56 |
server.begin(); |
57 |
|
58 |
} |
59 |
|
60 |
void loop() { |
61 |
// wait for a new client: |
62 |
EthernetClient client = server.available(); |
63 |
|
64 |
// when the client sends the first byte, say hello: |
65 |
if (client) { |
66 |
if (!gotAMessage) { |
67 |
Serial.println("We have a new client"); |
68 |
client.println("Hello, client!"); |
69 |
gotAMessage = true; |
70 |
} |
71 |
|
72 |
// read the bytes incoming from the client: |
73 |
char thisChar = client.read(); |
74 |
// echo the bytes back to the client: |
75 |
server.write(thisChar); |
76 |
// echo the bytes to the server as well: |
77 |
Serial.print(thisChar); |
78 |
} |
79 |
} |
80 |
|