?? testserver.cc
字號:
/* * Little Green BATS (2006) * * Authors: Martin Klomp (martin@ai.rug.nl) * Mart van de Sanden (vdsanden@ai.rug.nl) * Sander van Dijk (sgdijk@ai.rug.nl) * A. Bram Neijt (bneijt@gmail.com) * Matthijs Platje (mplatje@gmail.com) * * Date: September 14, 2006 * * Website: http://www.littlegreenbats.nl * * Comment: Please feel free to contact us if you have any * problems or questions about the code. * * * License: This program is free software; you can redistribute * it and/or modify it under the terms of the GNU General * Public License as published by the Free Software * Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will * be useful, but WITHOUT ANY WARRANTY; without even the * implied warranty of MERCHANTABILITY or FITNESS FOR A * PARTICULAR PURPOSE. See the GNU General Public * License for more details. * * You should have received a copy of the GNU General * Public License along with this program; if not, write * to the Free Software Foundation, Inc., 59 Temple Place - * Suite 330, Boston, MA 02111-1307, USA. * */#ifndef __SYSINC_IOSTREAM#define __SYSINC_IOSTREAM#include <iostream>#endif#include "testserver.hh"namespace mvds { TestServer::TestServer(int _port) : Server(_port) { } bool TestServer::accept_connection(SocketInfo &_info) { std::cout << "Connection request!" << std::endl;; _info.data = new Data; return true; } bool TestServer::ready_to_read(SocketInfo &_info) { std::cout << "A socket is ready to read (address: " << _info.address << ")." << std::endl; char buf[100]; unsigned size; size = _info.socket.read(reinterpret_cast<char *>(buf),sizeof(buf)-1); if (!size) { _info.socket.close(); std::cout << "Socket closed." << std::endl; return true; } std::cout << "Read " << size << " bytes of data." << std::endl; buf[size] = 0; std::cout << reinterpret_cast<char*>(buf) << std::endl; static_cast<Data*>(_info.data)->test = reinterpret_cast<char*>(buf); if (!strncmp(reinterpret_cast<char*>(buf),"quit",4)) stop(); return true; } bool TestServer::ready_to_write(SocketInfo &_info) { std::cout << "A socket is ready to write (address: " << _info.address << ")." << std::endl; unsigned size = _info.socket.write(static_cast<Data*>(_info.data)->test.c_str(), static_cast<Data*>(_info.data)->test.length()); std::cout << "Written " << size << " bytes." << std::endl; return true; } bool TestServer::ready_to_read_oob(SocketInfo &_info) { std::cout << "A socket is ready to read oob (address: " << _info.address << ")." << std::endl; return false; } void TestServer::delete_connection(SocketInfo &_info) { std::cout << "Deleting a connection." << std::endl; delete _info.data; }};
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -