Getting started with Arduino Ethernet

Ardu-Server is quite fun and functional.

stinsley:
I have connected it to my network and assumed that the DHCP in my router should give it an IP address

No, it doesn't.

stinsley:
All I want to do initially is put an example Sketch on it.

The Arduino Ethernet is not programmed over Ethernet. You need a USB to FTDI style cable to program sketches on to the board.

I'm with Stinsley here. . . And no, I am not a complete noob - been doing this stuff for years, however I AM new to the Arduino.

My goals are as follows:

  1. Find a GOOD tutorial about how to use the Ethernet shield. I've seen a number of threads where they end up using command-line commands (like ifconfig, ping, etc.), and reporting error messages - and it's not clear exactly how this is being done. Within the Arduino? From something else on the network?

Ideally, I would have enough information from the tutorial that if/when I find some decent code/sketches, I can follow along and try to understand what is happening. And when, (note - "when", not "if"), something goes wrong, I would have enough of a handle on things to intelligently troubleshoot what is going on.

  1. Find some example(s) for using the Arduino + Ethernet shield to do at least SOMETHING.
    Hopefully these would be both client and server examples. I've seen any number of references to them - and some pretty heated arguments too! - but no help on actually FINDING them.

Goal 1: Verify that my shield actually works.
Goal 2: Find some code that I can use as a springboard for my own experiments.
Goal 3: Make it do something that is actually useful.
Goal 4: (Hopefully!) Get to the point where I can contribute intelligently to the Arduino community via advice and examples


Another thing - perhaps only slightly off topic. . . .

I would like to suggest a careful re-write of a lot of the fundamental documentation on the Arduino - especially the Guide(s) - as not everyone here has been using the Arduino for the last 10 or so years.

For example, I try to find information on the Arduino Ethernet shield using a search engine and I am brought to the Arduino "Ethernet Shield" page that shows me the shield, offers me schematics and such, (which is nice!), and refers me, (via a link), to the Guide for more information. The guide refers me to the Ethernet Library. The Ethernet Library page confirms that, yes, there are library routines written for the Ethernet Shield, it shows one-line references to the methods used - three of them - and then refers me, (via another hyperlink), back to the original Ethernet Shield page that I started from.

I don't want to come off as an ADD poster child here, but I have been on this site, rummaging around, for almost two hours now and I am no closer to a solution than when I started.

Likewise, I don't want to come off as someone who wants to troll and rant - I think the Arduino is an absolutely AWESOME idea - but finding decent examples for some of this stuff is not easy - especially if it's not in the pre-packaged examples that come with the Arduino IDE downloads.

Can you folks:

  1. Point me in the right direction?
  2. Make it easier for others to find this information without resorting to getting annoyed on a Forum list?

Yes, it's been a long day and I'm gettin' a bit tired. Hopefully you can excuse what might appear as me ranting or whatever - but (also hopefully), you can see the merit of what I am asking.

What say ye?

Jim (JR)

spcomputing:
Ardu-Server is quite fun and functional.
Microprocessors as webservers, with input and output across web- art5serv1

P.S. . . . .

I took another look at spcomputing's answer - silly me, I glossed over it the first time 'cause it looked like a spam-advertisement. Guess I'm gettin' a bit too jaded.

I wandered around at the link he offered - made notes of a number of the URL's referenced from there so I can go back to them - and this site's author does cover a bit of ground.

Glancing at this guy's stuff, it looks like it's got more whiskers than five cats. It's definitely going to be chewy, but it looks like it might be worth it. This dude at least takes the time to explain what he's doing, and why.

Any other good examples of both client and server side Arduino applications?

Thanks!

Jim (JR)

p.p.s. Now, if this was just easier for us noobs to find. . . . ( :grin: )

Here is my server code. It has 2 form fields.

Here is my client code. It down loads Google home every 10 seconds.

zoomkat has some examples on the forum too. Use the ones that suit you.

Bitlash (http://bitlash.net) comes with a web server example that may be helpful:

For a short response like a sensor reading you can define a Bitlash function to return a response to the invoking browser or server. There's a built-in, password-protected telnet server that allows you to log in remotely and use Bitlash to make changes like this.

For longer responses you can compile in pages with arbitrary HTML and embedded Bitlash code which is executed when the page is rendered.

Good luck with your project.

-br

billroy:
Bitlash (http://bitlash.net) comes with a web server example that may be helpful:

bitlash/BitlashWebServer.ino at master · billroy/bitlash · GitHub

Billroy, (et. al.)

Within the code you referenced, there is this comment:

For debugging, connect via your favorite Serial Monitor at 57600 You can watch the web traffic and issue commands

This begs the question: Where? How? With what?

Again, here is one of those chicken-and-egg scenarios - there are numerous references to a "serial terminal" - and there are even example sketches that purport to use one, but (AFAIK) there is no clear guide on how to do this. OK, I am sure there is, but it's not exactly easy to find.

I really appreciate the help I am getting here - it is invaluable! - however it strikes me as a rather poor user experience when what should be simple, easy to find information, is hidden from view until someone like me gets on a forum like this to ask - for the zillionth time, I am sure - the same "What's a Cubit?" kind of noob questions.

If I had my 'druthers, there would be clearly written explanatory documentation in each of the example folders, explaining what is being done, how to do it, and possible additional references.

OK, you're right - I'm on my soap-box again. :smiley:

Thanks for all the help!

Jim (JR)

If I had my 'druthers, there would be clearly written explanatory documentation in each of the example folders, explaining what is being done, how to do it, and possible additional references.

OK, you're right - I'm on my soap-box again.

Getting on your soap box is fine. But, read through this whole thread again. You haven't explained what you want to do with your ethernet shield. How anyone is expected to anticipate everything that one might want to do with every variation of ethernet shield, and cover that in a tutorial is beyond me. Why you are berating people who have spent their time and their money to develop and host a tutorial that fails to anticipate how you want to use your ethernet shield in your environment with your network/firewall/ISP provider also escapes.

OK. I'll get off my soapbox now. If you post a question like "How do I use my Ethernet shield to connect to server this-or-that and execute script these-or-those", you'll get an answer. If you post a question like "How do I configure router this-or-that to assign an IP address to my Arduino", you'll get an answer. If you post specific questions, you'll get specific answers.

Vague questions do not get good answers.

Remember that an ethernet shield is just a piece of the puzzle. By the time that you know you want/need one, you are expected to know something about networking, something about configuring your network, etc.

Client test code that works on my system.

//zoomkat 9-22-12
//simple client test
//for use with IDE 1.0.1
//with DNS, DHCP, and Host
//open serial monitor and send an e to test
//for use with W5100 based ethernet shields

#include <SPI.h>
#include <Ethernet.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address

char serverName[] = "web.comporium.net"; // zoomkat's test web page server
EthernetClient client;

//////////////////////

void setup(){

  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    // no point in carrying on, so do nothing forevermore:
    while(true);
  }

  Serial.begin(9600); 
  Serial.println("Better client test 9/22/12"); // so I can keep track of what is loaded
  Serial.println("Send an e in serial monitor to test"); // what to do to test
}

void loop(){
  // check for serial input
  if (Serial.available() > 0) //if something in serial buffer
  {
    byte inChar; // sets inChar as a byte
    inChar = Serial.read(); //gets byte from buffer
    if(inChar == 'e') // checks to see byte is an e
    {
      sendGET(); // call sendGET function below when byte is an e
    }
  }  
} 

//////////////////////////

void sendGET() //client function to send/receive GET request data.
{
  if (client.connect(serverName, 80)) {  //starts client connection, checks for connection
    Serial.println("connected");
    client.println("GET /~shb/arduino.txt HTTP/1.0"); //download text
    client.println("Host: web.comporium.net");
    client.println(); //end of get request
  } 
  else {
    Serial.println("connection failed"); //error message if no client connect
    Serial.println();
  }

  while(client.connected() && !client.available()) delay(1); //waits for data
  while (client.connected() || client.available()) { //connected or data available
    char c = client.read(); //gets byte from ethernet buffer
    Serial.print(c); //prints byte to serial monitor 
  }

  Serial.println();
  Serial.println("disconnecting.");
  Serial.println("==================");
  Serial.println();
  client.stop(); //stop client

}

PaulS:
Getting on your soap box is fine. But, read through this whole thread again. You haven't explained what you want to do with your ethernet shield.

Paul,

I absolutely agree. Questions like "Duh, it don't work!" get us nowhere.

However - and correct me if I am wrong - I have listed very specific goals in my use of the Ethernet shield - and yes, I have received excellent answers from many people, to whom I will be forever in their debt.

Again, maybe I am wrong, but one of my "hot buttons" as a Software QA engineer of many years, is usability, and I believe that usability is one of the hallmarks of well written code and documentation.

IMHO - truly in my own very humble opinion - I appreciate these fora, and all the other fora that I have been privileged to participate in. The ability to learn from those who have gone before is invaluable - and I honestly applaud those who take the time to answer my own silly noob questions - even if it is for the four-zillionth time.

Likewise, again IMHO, my own very humble opinion, as a newbie I can see things that - perhaps - escape the notice of those who have been working within the Arduino community for years and years. These experts naturally know that in order to make this particular thing work you have to tweak this, nudge that, and give this other thing a little twist to the left. They have done it so often that it is second nature to them.

Unfortunately, for those of us who are (relatively) new to the Arduino platform, these things are not self-evident. We do what the documentation tells us to do, and slam up against that brick wall, because we don't know about the tweaks, nudges, and twists that the "old timers" know about.

Ergo, these fora. For which, again, I am most humbly grateful.

My point is this:
If these things are more carefully explained in the documentation accompanying a piece of software - or if there is even some kind of documentation at all - the noob like myself who does not mind reading the documentation before trying to load code, will have a chance to learn these things without taking up the valuable time of the experts on these fora, explaining and re-re-re-explaining what should be obvious, and obviously documented.

These people don't get paid for this. They do this because they have a sincere desire to support a platform they admire. And their time is valuable. As much as I appreciate the comments and advice that everyone has given me, I know that there are better, more worthy, questions that they should be answering. Ergo, my comments suggesting better and more comprehensive documentation.

On the Propeller fora, I have offered to compile zipped archives of their various object libraries - for two reasons:
First: I get a copy of everything!
Second: Other folks like me don't have to go through a list of a hundred-or-so objects and download each and every one, one at a time.

I cannot do much there, I am still way too green, but this is my way of offering to "give back" to the community.

And as soon as I find something that I, myself, can do to help here within the Arduino community - despite my own limited knowledge - it will be my privilege to do so.

I am sorry if I appeared to come off as one simply ranting and raving - for that I apologize - however, I do believe that the gist of my comments has merit, and should be considered.

What say ye?

Jim (JR)

p.s.

Can someone please explain what is meant by a "serial terminal" within the Arduino context? (Oh, and yes, I know what a serial terminal is. I also know what a keypunch, a dedicated micro-controller, firmware, and a host of other things are.)

  • Do I physically attach some kind of serial device to pins "x" and "y" of the Arduino?
  • Is there a piece of software - perhaps within the Arduino IDE, or somewhere else - that takes care of that automagically?

Again, this seems to be assumed, but I'd rather not make any more assumptions than I absolutely have to - I've been bitten in the behind too many times because of some asinine assumption I made.

Thanks again for all your help!

Jim (JR)

Any USB serial monitor or terminal program will do.

This one is built-in to the Arduino IDE:

It could be documented better. I accept pull requests for the Bitlash wiki on Github.

-br

Tools -> Serial Monitor

Also that little magnifying glass icon.

@ Everyone

Re: Serial terminal.

Thanks!

I had heard / read about a "serial terminal" window in the Arduino IDE, but what I read left a lot to be desired - how to make it work, is it done automagically, etc. So, (if I am understanding all this correctly), unless I "do something different" - whatever that is - any requests, via sketches software, hardware, or whatever, to use a "serial terminal", (using the built-in serial libraries?), automagically get routed through the USB interface to the IDE's serial terminal window. Right?

While we're on this topic. . . (a bit off-topic, I apologize) . . . I just noticed on both my Uno and Mega boards that there are two pin-connections labeled "TX" and "RX", (on the Uno), "TX-0" and "RX-0", (on the Mega). (I had my Uno hidden under a Seeed servo/DC Motor shield - so I did not really notice this until now.) Do these run "in parallel" with the USB "serial" interface, or are they programmatically different?

Example: I have a 16x2 serial display board that I bought with the other Arduino "toys" I picked up for myself. It would be interesting to send, (at least), some status/display information to that display while the Ethernet board, (or some other shield, for that matter), is running.

You know, I used to be knee-deep in electronics and micro-controller electronics head first. ( :smiley: ) but I've been away from it for a LOOONG time. (since the mid '90's. . .) This Arduino stuff is really getting me all excited about this stuff, all over again! For which I thank all of you.

What say ye?

Jim (JR)

I had heard / read about a "serial terminal" window in the Arduino IDE, but what I read left a lot to be desired - how to make it work, is it done automagically, etc. So, (if I am understanding all this correctly), unless I "do something different" - whatever that is - any requests, via sketches software, hardware, or whatever, to use a "serial terminal", (using the built-in serial libraries?), automagically get routed through the USB interface to the IDE's serial terminal window. Right?

Not exactly. Please review the following sketch (It is in Examples\Basics in the IDE) and tell me what you see.

/*
  AnalogReadSerial
  Reads an analog input on pin 0, prints the result to the serial monitor.
  Attach the center pin of a potentiometer to pin A0, and the outside pins to +5V and ground.
 
 This example code is in the public domain.
 */

// the setup routine runs once when you press reset:
void setup() {
  // initialize serial communication at 9600 bits per second:
  Serial.begin(9600);
}

// the loop routine runs over and over again forever:
void loop() {
  // read the input on analog pin 0:
  int sensorValue = analogRead(A0);
  // print out the value you read:
  Serial.println(sensorValue);
  delay(1);        // delay in between reads for stability

While we're on this topic. . . (a bit off-topic, I apologize) . . . I just noticed on both my Uno and Mega boards that there are two pin-connections labeled "TX" and "RX", (on the Uno), "TX-0" and "RX-0", (on the Mega). (I had my Uno hidden under a Seeed servo/DC Motor shield - so I did not really notice this until now.) Do these run "in parallel" with the USB "serial" interface, or are they programmatically different?

Example: I have a 16x2 serial display board that I bought with the other Arduino "toys" I picked up for myself. It would be interesting to send, (at least), some status/display information to that display while the Ethernet board, (or some other shield, for that matter), is running.

Yes, you have a TTL/UART communication on the UNO and four on the MEGA. For the MEGA, you will address Serial, Serial1, Serial2 and Serial3 for the individual UARTs. Technically speaking, the UNO or MEGA's USB Serial is it's own UART via the Atmega8u2/16u2, but it uses the Serial (Rx0/Tx0) of the Mega or Uno to put things out through the USB via the Transistor to Transistor Level communication.

Clear as mud? Just start with some sketches, mess with some of the parameters and admit you are an Arduino noob :wink: We all were in the beginning.

My point is this:
If these things are more carefully explained in the documentation accompanying a piece of software - or if there is even some kind of documentation at all - the noob like myself who does not mind reading the documentation before trying to load code, will have a chance to learn these things without taking up the valuable time of the experts on these fora, explaining and re-re-re-explaining what should be obvious, and obviously documented.

I won't disagree that the documentation would be improved. Where I have in issue, though, is with the idea that an Ethernet shield is going to make magic happen.

The process of adding an ethernet card to a PC, back in the days before every computer came with them, was only undertaken by those that understood that the card was not a solver bullet. Magic wasn't going to happen because the card got installed.

Back then, plugging in the card, then saying "Hey, everybody, I've got an ethernet card now, and magic isn't happening" got you strange looks. As it does today when you add an ethernet shield to an Arduino and expect magic to happen.

I still expect that you will have a fundamental understanding of client/server application development before you see the ethernet shield as a necessary component. I expect you to have at least passing familiarity with doing the same stuff with a PC that you want to do with an Arduino with ethernet shield.

Asking for links to tutorials to show you how to use the ethernet shield is an admission that the basic understanding is missing. It is that basic understanding that allows us to tell you to "tweak this, nudge that, and give this other thing a little twist to the left."

I'm fine with us agreeing to disagree.

Paul,

When you posted your reply, I was ready to post a - lengthy - reply. . . . However, I deleted it and waited a few days to read your post again.

Re-reading it today, it still infuriates me. I cannot imagine how - on a forum like this - you can come on with such an absolutely arrogant attitude toward me - and possibly others here on these fora as well.

You said:

I still expect that you will have a fundamental understanding of client/server application development before you see the ethernet shield as a necessary component. I expect you to have at least passing familiarity with doing the same stuff with a PC that you want to do with an Arduino with ethernet shield.

I do not cede you the right to expect, or demand, anything from me.

You said:

Asking for links to tutorials to show you how to use the ethernet shield is an admission that the basic understanding is missing.

Likewise, I do not cede you the right to place limits upon the questions I may pose.

( :shaking head in wonder: )
I cannot understand how you can equate "asking for help/tutorials" so that I can see how it is done with the Arduino, with lacking any understanding about computers, networking, the Internet, etc. etc. etc.

It is exactly this kind of arrogance that drives people away from these fora, and makes them think two or three times about making use of the resources available here. People don't come here to be spanked by the likes of you, they want help and encouragement. And I am glad to say that everyone else on this forum has provided exactly that. I have looked at code, seen how it is done, played with it, and had fun.

A request, if I may: (Quoting a sign I have over my desk)
Be nice, or go away.

What say ye?

Jim (JR)

Zoomkat,

First of all, thank you, (and everyone else for that matter), for the excellent code.

I believe I have found a small bug:

In your demo code, you wrote:

void setup(){

  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    // no point in carrying on, so do nothing forevermore:
    while(true);
  }

  Serial.begin(9600);  <<--- In the wrong place?

  Serial.println("Better client test 9/22/12"); // so I can keep track of what is loaded
  Serial.println("Send an e in serial monitor to test"); // what to do to test
}

You place the Serial.begin statement just prior to where you print your banner title.
Shouldn't it be placed just after the declaration of the "setup" method? AFAIK, placed after the Ethernet.begin reference, the error code within it cannot print. Right?

I had some fun with your code, moved that statement around, snooped out the Ethernet.cpp file, snipped some code from the "DhcpAddressPrinter" Ethernet example. . . . and added some code to give the user some feedback, and display the characteristics of his connection before it moves on to your test.

Here it is:

//zoomkat 9-22-12
//Updated 09/29/2012 by Jim Harris (JR) to provide a "confidence" message and IP info after connect
//simple client test
//for use with IDE 1.0.1
//with DNS, DHCP, and Host
//open serial monitor and send an e to test
//for use with W5100 based ethernet shields

#include <SPI.h>
#include <Ethernet.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address

char serverName[] = "web.comporium.net"; // zoomkat's test web page server
EthernetClient client;

//////////////////////

void setup(){

/*
Added by JR on 9/29/2012
Moved Serial.begin so that it appears prior to any serial message reference.
Added startup confidence message - as the sketch appears to hang when seeking an IP address.
*/
    Serial.begin(9600);
    Serial.println("Attempting to retrieve an IP address via DHCP\n");
    //  Added a "timing" message to help manage the users expectations
    Serial.println("This might take a little while, so why not go and");
    Serial.println("get a cuppa coffee while you wait\n");
//  end add =========================================================

  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    // no point in carrying on, so do nothing forevermore:
    while(true);
  }
/*
Added by JR on 09/29/2012
Added an "answer" to the "acquiring" message printed above.
*/
  Serial.println("Ahhh . .  Got one!");

/*
Here I snipped the central code block from the
"DhcpAddressPrinter" example found within the Ethernet library
folder, duplicated it four times, scrounged the Ethernet source,
and added the display of the IP address obtained, the subnet mask,
the gateway IP address, and the address of the assigned DNS server.
*/
  // print your local IP address:
  Serial.print("My IP address is: ");
  for (byte thisByte = 0; thisByte < 4; thisByte++) {
    // print the value of each byte of the IP address:
    Serial.print(Ethernet.localIP()[thisByte], DEC);
    Serial.print("."); 
  }
  Serial.print("\n");  //  Added to space the various entries.

  // print your local subnet mask:
  Serial.print("My Subnet Mask is: ");
  for (byte thisByte = 0; thisByte < 4; thisByte++) {
    // print the value of each byte of the IP address:
    Serial.print(Ethernet.subnetMask()[thisByte], DEC);
    Serial.print("."); 
  }
  Serial.print("\n");

  // print your local gatewaay:
  Serial.print("My Local Gateway is: ");
  for (byte thisByte = 0; thisByte < 4; thisByte++) {
    // print the value of each byte of the IP address:
    Serial.print(Ethernet.gatewayIP()[thisByte], DEC);
    Serial.print("."); 
  }
  Serial.print("\n");

  // print your local DNS server IP:
  Serial.print("My Local DNS Server is: ");
  for (byte thisByte = 0; thisByte < 4; thisByte++) {
    // print the value of each byte of the IP address:
    Serial.print(Ethernet.dnsServerIP()[thisByte], DEC);
    Serial.print("."); 
  }
  Serial.print("\n\n");  //  Added to provide spacing from my text and zoomkat's original text.
//  End add ===============================================================

  Serial.println("Better client test 9/22/12"); // so I can keep track of what is loaded
  Serial.println("Send an e in serial monitor to test"); // what to do to test
}

void loop(){
  // check for serial input
  if (Serial.available() > 0) //if something in serial buffer
  {
    byte inChar; // sets inChar as a byte
    inChar = Serial.read(); //gets byte from buffer
    if(inChar == 'e') // checks to see byte is an e
    {
      sendGET(); // call sendGET function below when byte is an e
    }
  }  
} 

//////////////////////////

void sendGET() //client function to send/receive GET request data.
{
  if (client.connect(serverName, 80)) {  //starts client connection, checks for connection
    Serial.println("connected");
    client.println("GET /~shb/arduino.txt HTTP/1.0"); //download text
    client.println("Host: web.comporium.net");
    client.println(); //end of get request
  } 
  else {
    Serial.println("connection failed"); //error message if no client connect
    Serial.println();
  }

  while(client.connected() && !client.available()) delay(1); //waits for data
  while (client.connected() || client.available()) { //connected or data available
    char c = client.read(); //gets byte from ethernet buffer
    Serial.print(c); //prints byte to serial monitor 
  }

  Serial.println();
  Serial.println("disconnecting.");
  Serial.println("==================");
  Serial.println();
  client.stop(); //stop client

}

Take a look and critique it.

Feel free to mess with it as I have done.

A question:

On my Windows 7 system (that I am using as the development system), ipconfig returns the following information about my hard-wired Ethernet connection:

Ethernet adapter Local Area Connection:

   Connection-specific DNS Suffix  . : vgorilla.com
   Description . . . . . . . . . . . : Realtek PCIe FE Family Controller
   Physical Address. . . . . . . . . : 00-1E-33-FB-62-21
   DHCP Enabled. . . . . . . . . . . : Yes
   Autoconfiguration Enabled . . . . : Yes
   IPv4 Address. . . . . . . . . . . : 172.31.100.100(Preferred)
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Lease Obtained. . . . . . . . . . : Sunday, September 30, 2012 4:52:01 PM
   Lease Expires . . . . . . . . . . : Monday, October 01, 2012 7:44:37 PM
   Default Gateway . . . . . . . . . : 172.31.100.1
   DHCP Server . . . . . . . . . . . : 172.31.100.1
   DNS Servers . . . . . . . . . . . : 172.16.250.1
                                       66.189.0.100
                                       24.159.64.23
                                       24.247.24.53
   NetBIOS over Tcpip. . . . . . . . : Enabled

Note that there are three external DNS servers returned by the DHCP configuration request, (the first one is hard-coded so that I can use a particular VPN connection more easily.)

When I run my updated code and display the DNS IP address, it only retrieves and displays ONE DNS IP address. (The 66.189.0.100 address)

Even if I increase the loop count for gathering the DNS IP address to 8, it still displays only the one. The second comes back as 194.0.0.0
Viz.:

Attempting to retrieve an IP address via DHCP. . . .
Ahh . . Got one!
My IP address is: 172.31.100.104.
My Subnet Mask is: 255.255.255.0.
My Local Gateway is: 172.31.100.1.
My Local DNS Server is: 66.189.0.100.194.0.0.0.  <-- yes, I know the formatting stinks

Better client test 9/22/12
Send an e in serial monitor to test

Why is that? Can it retrieve more than one DNS address? Would it even be useful in the Arduino context?

I have also been having fun with the serial library and a 16x2 LCD display. When I get time, I'll see if I can get this thing to print to the external display instead of the built-in serial terminal.

What say ye?

Jim (JR)

Likewise, I do not cede you the right to place limits upon the questions I may pose.

I'm not trying to impose any limits on the questions you ask. You asked for links to tutorials to using the ethernet shield. Then, you complained that they were inadequate/wrong/assumed stuff you didn't know/didn't apply.

I think that you have unrealistic expectations. You expect us to do your research for you, and only point you to hand-holding tutorials that explain in detail what you need to do, without trying to teach you anything else, while not saying exactly what it is you want to do. I don't see how we can be expected to do that.

A request, if I may: (Quoting a sign I have over my desk)
Be nice, or go away.

I'm not going away. I just won't be responding to you, anymore.