First version
Dependencies: mbed EthernetInterface mbed-rto
TCPlistener.cpp
- Committer:
- KlaasGovaerts
- Date:
- 2018-04-18
- Revision:
- 13:a6c651a1e51c
- Parent:
- 12:f3db7045e220
- Child:
- 14:5f1fda6b9140
File content as of revision 13:a6c651a1e51c:
#include "TCPlistener.h" TCPlistener::TCPlistener(){ char ip[]="192.168.0.253"; char mask[]="255.255.255.0"; char gateway[]="192.168.0.254"; eth.init(ip,mask,gateway); eth.connect(); server.bind(4000); server.set_blocking(false); for(int i=0;i<10;i++){ connections[i]=new TCPSocketConnection(); } } void TCPlistener::listen(){ server.listen(10);//Accept 10 connections at a time. //Source:https://os.mbed.com/handbook/Socket bool incomingConnection=true; while(incomingConnection){ TCPSocketConnection *connection=newConnection(); server.accept(client); } //client.set_blocking(false, 100); printf("Connection from: %s\n", client.get_address()); } void TCPlistener::receivePacket(char *contents,int size){ int n = server.receive(contents, size); contents[n] = '\0'; printf("Segment ontvangen van %s:%i met inhoud \"%s\"\r\n", client.get_address(),client.get_port(),contents); } TCPSocketConnection * TCPlistener::newConnection(TCPSocketConnection **connectionArray,int arraySize){ bool searchLocation=true; for(int i=0;i<arraySize&&searchLocation;i++){ if(connectionArray[i]==0){ connectionArray[i]=new TCPSocketConnection(); return connectionArray[i]; } else if(!(connectionArray[i]->is_connected())){ delete connectionArray[i]; connectionArray[i]=new TCPSocketConnection(); return connectionArray[i]; } } return 0; } /* if(){ connections[i]=new TCPSocketConnection(); searchLocation=false; } */