First version

Dependencies:   mbed EthernetInterface mbed-rto

Committer:
KlaasGovaerts
Date:
Wed Apr 18 08:35:32 2018 +0000
Revision:
14:5f1fda6b9140
Parent:
13:a6c651a1e51c
Child:
15:ffd311730575
Versie 18/04 (3)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
KlaasGovaerts 4:0413d42377d1 1 #include "TCPlistener.h"
KlaasGovaerts 4:0413d42377d1 2
KlaasGovaerts 4:0413d42377d1 3 TCPlistener::TCPlistener(){
KlaasGovaerts 4:0413d42377d1 4 char ip[]="192.168.0.253";
KlaasGovaerts 4:0413d42377d1 5 char mask[]="255.255.255.0";
KlaasGovaerts 4:0413d42377d1 6 char gateway[]="192.168.0.254";
KlaasGovaerts 4:0413d42377d1 7 eth.init(ip,mask,gateway);
KlaasGovaerts 4:0413d42377d1 8 eth.connect();
KlaasGovaerts 4:0413d42377d1 9 server.bind(4000);
KlaasGovaerts 12:f3db7045e220 10 server.set_blocking(false);
KlaasGovaerts 12:f3db7045e220 11 for(int i=0;i<10;i++){
KlaasGovaerts 14:5f1fda6b9140 12 connections[i]=0;
KlaasGovaerts 12:f3db7045e220 13 }
KlaasGovaerts 14:5f1fda6b9140 14 arraySize=10;
KlaasGovaerts 4:0413d42377d1 15 }
KlaasGovaerts 12:f3db7045e220 16 void TCPlistener::listen(){
KlaasGovaerts 14:5f1fda6b9140 17 //server.listen(10);//Accept 10 connections at a time.
KlaasGovaerts 12:f3db7045e220 18 //Source:https://os.mbed.com/handbook/Socket
KlaasGovaerts 12:f3db7045e220 19 bool incomingConnection=true;
KlaasGovaerts 12:f3db7045e220 20 while(incomingConnection){
KlaasGovaerts 13:a6c651a1e51c 21 TCPSocketConnection *connection=newConnection();
KlaasGovaerts 14:5f1fda6b9140 22 if(server.accept(connection)==-1)
KlaasGovaerts 14:5f1fda6b9140 23 incomingConnection=false;
KlaasGovaerts 12:f3db7045e220 24 }
KlaasGovaerts 12:f3db7045e220 25 //client.set_blocking(false, 100);
KlaasGovaerts 12:f3db7045e220 26
KlaasGovaerts 12:f3db7045e220 27
KlaasGovaerts 12:f3db7045e220 28 printf("Connection from: %s\n", client.get_address());
KlaasGovaerts 12:f3db7045e220 29
KlaasGovaerts 12:f3db7045e220 30
KlaasGovaerts 12:f3db7045e220 31 }
KlaasGovaerts 12:f3db7045e220 32
KlaasGovaerts 4:0413d42377d1 33 void TCPlistener::receivePacket(char *contents,int size){
KlaasGovaerts 12:f3db7045e220 34 int n = server.receive(contents, size);
KlaasGovaerts 4:0413d42377d1 35 contents[n] = '\0';
KlaasGovaerts 4:0413d42377d1 36 printf("Segment ontvangen van %s:%i met inhoud \"%s\"\r\n", client.get_address(),client.get_port(),contents);
KlaasGovaerts 12:f3db7045e220 37 }
KlaasGovaerts 12:f3db7045e220 38
KlaasGovaerts 14:5f1fda6b9140 39 TCPSocketConnection * TCPlistener::newConnection(){
KlaasGovaerts 13:a6c651a1e51c 40 bool searchLocation=true;
KlaasGovaerts 13:a6c651a1e51c 41 for(int i=0;i<arraySize&&searchLocation;i++){
KlaasGovaerts 14:5f1fda6b9140 42 if(connections[i]==0){
KlaasGovaerts 14:5f1fda6b9140 43 connections[i]=new TCPSocketConnection();
KlaasGovaerts 14:5f1fda6b9140 44 return connections[i];
KlaasGovaerts 14:5f1fda6b9140 45 } else if(!(connections[i]->is_connected())){
KlaasGovaerts 14:5f1fda6b9140 46 delete connections[i];
KlaasGovaerts 14:5f1fda6b9140 47 connections[i]=new TCPSocketConnection();
KlaasGovaerts 14:5f1fda6b9140 48 return connections[i];
KlaasGovaerts 13:a6c651a1e51c 49 }
KlaasGovaerts 13:a6c651a1e51c 50 }
KlaasGovaerts 13:a6c651a1e51c 51 return 0;
KlaasGovaerts 13:a6c651a1e51c 52 }
KlaasGovaerts 13:a6c651a1e51c 53
KlaasGovaerts 13:a6c651a1e51c 54 /*
KlaasGovaerts 13:a6c651a1e51c 55 if(){
KlaasGovaerts 13:a6c651a1e51c 56 connections[i]=new TCPSocketConnection();
KlaasGovaerts 13:a6c651a1e51c 57
KlaasGovaerts 13:a6c651a1e51c 58 searchLocation=false;
KlaasGovaerts 13:a6c651a1e51c 59 }
KlaasGovaerts 13:a6c651a1e51c 60 */