Ethernet Server/Client Cross Language Assistance

I am working on a project in which I would like to send data between a client (python) and a server (arduino). Currently my code looks like:


import socket
from socket import *
from naoqi import ALProxy
        HOST = ''
        PORT = 22    
        ADDR = (HOST,PORT)
        BUFSIZE = 4096
        cli = socket( AF_INET,SOCK_STREAM)
        data = cli.recv(BUFSIZE)
        print data

The server on the Arduino looks like:

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

// Server Setup
byte mac[] = {0x90, 0xA2, 0xDA, 0x00, 0x80, 0x79};
byte ip[] = {169, 254, 136, 107};
static int port = 22;

// I/O
static int LEDPIN = 7;

EthernetServer server = EthernetServer(23);

void setup() {
  Ethernet.begin(mac, ip); 
 // pinMode(LEDPIN, OUTPUT);
 // digitalWrite(LEDPIN, HIGH);
 // delay(1000);
 // digitalWrite(LEDPIN, LOW);

void loop() {
  EthernetClient client = server.available();
  if (client == true) {
    int recv =;
    if (recv == 255)
      digitalWrite(LEDPIN, HIGH);

I have a test fan (small 5v, I don’t have an led…) linked to gnd and pin 7. I just want a very simple test for this. Can someone help me? I would just like to send on/off commands and perhaps read sensors in the future.

Does the fan really draw less than 40mA? I think some debug prints would do less damage to your Arduino.

The fan draws 50ma, but seems to be ok. I will get an LED. In any case, how would I make this work?

The fan draws 50ma, but seems to be ok.

The absolute maximum rating for an AVR I/O pin is 40mA, but if you think a 120% overload is OK...

In any case, how would I make this work?

With a buffer transistor.

Or do you mean, "how do I use debug prints?" ?

Well, I've unplugged the fan now. Would that fry the whole board or just one pin?

I posted this on the Programming Questions board. I am not looking for a electrical answer for my question.

I will be using a LED. I am restricted to Python on my client side and Processing for the Arduino on the server side.

posted this on the Programming Questions board. I am not looking for a electrical answer for my question.

No, but it's useful to have known working hardware to run your software, don't you think? ;)

You've already got a Serial.begin in your sketch, so why not use serial debug prints, instead of hardware?

Simple web based server code.

//zoomkat 1-10-11
//web LED code
//for use with IDE 1.0
//open serial monitor to see what the arduino receives
//use the \ slash to escape the " in the html 
//address will look like when submited
//for use with W5100 based ethernet shields

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

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address
byte ip[] = { 192, 168, 1, 102 }; // ip in lan
byte gateway[] = { 192, 168, 1, 1 }; // internet access via router
byte subnet[] = { 255, 255, 255, 0 }; //subnet mask
EthernetServer server(84); //server port

String readString; 


void setup(){

  pinMode(4, OUTPUT); //pin selected to control
  //start Ethernet
  Ethernet.begin(mac, ip, gateway, subnet);

  //enable serial data print 
  Serial.println("servertest1"); // so I can keep track of what is loaded

void loop(){
  // Create a client connection
  EthernetClient client = server.available();
  if (client) {
    while (client.connected()) {
      if (client.available()) {
        char c =;

        //read char by char HTTP request
        if (readString.length() < 100) {

          //store characters to string 
          readString += c; 
          //Serial.print(c); //uncomment to see in serial monitor

        //if HTTP request has ended
        if (c == '\n') {


          //now output HTML data header

          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");

          client.println("<TITLE>Arduino GET test page</TITLE>");

          client.println("<H1>HTML form GET example</H1>");

          client.println("<FORM ACTION=\"\" method=get >");

          client.println("Pin 4 \"on\" or \"off\": <INPUT TYPE=TEXT NAME=\"LED\" VALUE=\"\" SIZE=\"25\" MAXLENGTH=\"50\">

          client.println("<INPUT TYPE=SUBMIT NAME=\"submit\" VALUE=\"Change Pin 4!\">");




          //stopping client

          if(readString.indexOf("on") >0)//checks for on
            digitalWrite(4, HIGH);    // set pin 4 high
            Serial.println("Led On");
          if(readString.indexOf("off") >0)//checks for off
            digitalWrite(4, LOW);    // set pin 4 low
            Serial.println("Led Off");
          //clearing string for next read