//server's pseudocode (φορτωμένος στην Arduino's flash) //αρχικό σετάρισμα SET IP=192.168.10.253; OPEN_SOCKET_WITH_ADRESS( IP, 5000) ; //σερβίρω τα requests που δέχομαι από τον client WHILE (TRUE) { if (client){ READ char FROM THE SOCKET if (char=='a'){ SET PIN 3 HIGH VOLTAGE //στο pin 3 του μικροελεγκτή συνδέουμε το control pin του ρελέ // κανω trigger το ρελε->ανάβω τη λάμπα WRITE 'I am on' στο SOCKET // λέω στον client ότι άναψα τη λάμπα else if (char=='b'){ SET PIN 3 LOW VOLTAGE // σβήνω τη λάμπα WRITE 'I am off' στο SOCKET
#include <SPI.h> #include <Ethernet.h> int relay=2;//the relay's trigger pin is connected to arduino 's digital pin 2 byte mac[]={0xaa,0xaa,0xaa,0xaa,0xaa,0xaa; //the mac adress for the shield byte ip[]={192,168,10,253; //the ip adress for the shield EthernetServer server(5000);//the server opens a socket on port 5000 for the client 's commands void setup(){ pinmode(relay,output); Ethernet.begin(mac,ip); delay(10);//give a little time for the shield to initialize itself server.begin(); // start listening void loop(){ EthernetClient client = server.available(); //waits for clients if (client) { //i read the client 's request //the request will be one letter //'a'=turn IT ON //'b'=turn IT OFF char ch=client.read(); if (ch=='a'){
digitalwrite(relay,high);//i turn on the lamp client.println("i am on"); // i inform the client app that i turned on the light else if (ch='b'){ digitalwrite(relay,low); client.println("i am off"); delay(10); //client's pseudocode (φορτωμένος στo laptop) //αρχικό σετάρισμα OPEN A SOCKET WITH ADRESS ( 192.168.10.25, 20000) ; CONNECT TO REMOTE SERVER 'S SOCKET ( 192.168.10.253, 5000); //διαβάζω τα commands του user και αποκρινομαι καταλληλως WHILE (TRUE) { PRINT A COMMAND PROMPT "enter a command:"; READ cmd; if (cmd == 'turn on'){ WRITE 'a' στο SOCKET //στείλε εντολή να ανάψει η λάμπα READ response FROM THE SOCKET AND PRINT IT
else if (cmd == 'turn off'){ WRITE 'b' στο SOCKET //στείλε εντολή να σβήσει η λάμπα READ response FROM THE SOCKET AND PRINT IT else if (cmd == 'exit'){ close() else{ PRINT "command not found" import java.io.*; import java.net.*; public class RemoteLamp { public static void main(string[] args) { byte[] ipserver={ (byte)192, (byte)168, (byte)10, (byte)253 ; // το ip του server στον οποιο θελουμε να συνδεθουμε try{ Socket s=new Socket(InetAddress.getByAddress(ipServer),5000); //δημιουργω ενα socket("δικο μου socket") που συνδεεται με το server socket
/* πιο αναλυτικα... πως εκτελειται η παραπανω statement χρονικα; 1)δημιουργώ "το δικο μου socket" με ip την δικια μου ip και σαν port καποιον τυχαια επιλεγμενο αριθμο απο 0-65535 που το OS του υπολογιστή μου διάλεξε να μου δώσει(αυτό το port εκείνη τη δεδομένη στιγμή δε χρησιμοποιείται) το socket(192.168.10.253, 5000) δεν ειναι το δικό μου socket!!! ειναι του server!!! 2)στέλνω ενα πακέτο tcp connection request στο server 3)αμα ο server δεχθει αρχιζω και μιλαω μαζι του οτιδηποτε γραφτει στο socket αυτο θα σταλει στο server socket */ OutputStream sout=s.getoutputstream();//μέσω του sout θα κανω write στο socket,δηλαδη θα στειλω στο server DataInputStream sin=new DataInputStream(s.getInputStream()); //μέσω του sin θα κανω read απο το socket,δηλαδη θα διαβασω ο,τι μου εστειλε ο server DataInputStream keyboard=new DataInputStream(System.in); String command,indication ; while(true){ command=keyboard.readline(); //διαβασε απο το πληκτρολογιο if (command.equals("turn ON")){ //αν εδωσε turn on sout.write("a".getbytes()); //στειλε το a indication=sin.readline(); //διαβασε την απαντηση του server System.out.println(indication); //τυπωσε την στην κονσολα
else if (command.equals("turn OFF")){ sout.write("b".getbytes()); indication=sin.readline(); System.out.println(indication); εφαρμογη else if (command.equals("exit")){ // αν θελει να κλεισει την s.close(); //κλεισε τη συνδεση break; else{ FOLLOWING:"); System.out.println("THE COMMANDS ARE THE System.out.println("TURN ON"); System.out.println("TURN OFF"); System.out.println("EXIT"); catch(ioexception e){ System.out.println(e.getMessage()); System.exit(0);
import socket SERVER_ADR='192.168.10.253' PORT=5000 try: #ftiaxe to socket kai kane th syndesh s=socket.socket() s.connect((server_adr,port)) while True: command=raw_input('enter a command:') if command=='turn on': #sto socket grapse 'a' #read and print the response(apoteleitai apo 7 bytes "i am on") s.send('a') print s.recv(7) elif command=='turn off': #sto socket grapse 'b #read and print the response(apoteleitai apo 8 bytes "i am off") s.send('b') print s.recv(8) elif command=='quit': print('bye bye!!!') break else:
print('command not found\ninsert one of the following commands:\n1)turn on\n2)turn off\n3)quit\n') except : print("\nsth bad happened") finally: if not s==none: s.close()