#include "TCPServer.h" shared_ptr TCPServer::_instance = 0; shared_ptr TCPServer::instance(){ if(_instance == 0){ _instance = shared_ptr(new TCPServer); } return _instance; } TCPServer::TCPServer(){ std::cout << "TCPServer initialized" << std::endl; } void TCPServer::setup(int port){ _tcpServer.setup(port); } void TCPServer::update(){ int numClients = _tcpServer.getLastID(); for(auto i = 0; i < numClients; ++i){ if(_tcpServer.isClientConnected(i)){ // Notify application when new client connects if(!_tcpConnections[i]){ ofxJSONElement json; json["ip"] = _tcpServer.getClientIP(i); json["port"] = _tcpServer.getClientPort(i); json["id"] = i; json["event"] = "connected"; ofMessage message(json.getRawString()); ofSendMessage(message); _tcpConnections[i] = true; } // Receive messages string rx = _tcpServer.receive(i); if(rx.length() > 0){ ofxJSONElement json; bool ok = json.parse(rx); if(!ok){ json["ip"] = _tcpServer.getClientIP(i); json["port"] = _tcpServer.getClientPort(i); json["id"] = i; json["event"] = "received"; json["data"] = rx; } ofMessage message(json.getRawString()); ofSendMessage(message); } }else{ // Notify application when client disconnects if(_tcpConnections[i]){ ofxJSONElement json; json["ip"] = _tcpServer.getClientIP(i); json["port"] = _tcpServer.getClientPort(i); json["id"] = i; json["event"] = "disconnected"; ofMessage message(json.getRawString()); ofSendMessage(message); _tcpConnections[i] = false; } } } } void TCPServer::draw(){ int numClients = _tcpServer.getLastID(); int clientsConnected = 0; for(auto i = 0; i < numClients; ++i){ if(_tcpServer.isClientConnected(i)){ ofSetColor(0, 255, 0); ofPushMatrix(); ofTranslate(10, 10); ofDrawRectangle(clientsConnected * 20, 0, 10, 10); ofPopMatrix(); clientsConnected++; } } } void TCPServer::send(int clientID, std::string message){ _tcpServer.send(clientID, message); }