From da4a77ff094a0dc74414ec1de2cac08e8b7b60f4 Mon Sep 17 00:00:00 2001 From: haller Date: Thu, 17 Nov 2005 11:10:17 +0000 Subject: Importation brut du code récupérable de robert --- i/marvin/src/socket/test_server.cc | 91 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 i/marvin/src/socket/test_server.cc (limited to 'i/marvin/src/socket/test_server.cc') diff --git a/i/marvin/src/socket/test_server.cc b/i/marvin/src/socket/test_server.cc new file mode 100644 index 0000000..81399ec --- /dev/null +++ b/i/marvin/src/socket/test_server.cc @@ -0,0 +1,91 @@ +// test_socket.cc +// robert - programme du robot 2005. {{{ +// +// Copyright (C) 2005 Dufour Jérémy +// +// 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. +// +// Contact : +// Web: %WEB% +// Email: +// }}} +#include "server_socket.hh" +#include "address.hh" +#include "socket_text.hh" +#include "data/data_input_file.hh" +#include "data/data_buffer.hh" +#include "image/raw_reader.hh" +#include "image/image.hh" + +#include +#include +#include + +int +main (int argc, char **argv) +{ + if (argc == 3) + { + try + { + // Serveur + ServerSocket ss (atoi (argv[1])); + Address a; + SocketText st (ss, a); + st.nonblock (); + // DataBuffer de reception + DataBuffer db; + uint8_t c = 'a'; + DataBuffer dbAskImg (&c, 1, 1, DataBuffer::AskImage); + st << dbAskImg; + st.send (); + // Reception des données + while (!st.recv ()); + st >> db; + if (db.type () != DataBuffer::Image) + throw std::runtime_error ("Echec de la transmission"); + RawReader reader (db, 360, 296, Image::rgb); + Image img (360, 296, Image::rgb); + img.read (reader); + std::ofstream file (argv[2]); + file.write ((char*) img.getBuf (), img.getBufSize ()); + +// // Récupération des données du DataBuffer +// std::vector v (db.size ()); +// db.read ((uint8_t*) &v[0], db.size ()); +// // Ecriture dans le fichier +// std::ofstream file (argv[2]); +// file.write (&v[0], v.size ()); +// DataBuffer db1; +// // Reception des données +// while (!st.recv ()); +// st >> db1; +// std::cout << ">> Reçu " << db1.size () << " bits." << std::endl; +// if (db1.type () != DataBuffer::Image) +// throw std::runtime_error ("Echec de la transmission"); + } + catch (const std::runtime_error &r) + { + std::cerr << argv[0] << ": " << r.what () << std::endl; + return 1; + } + } + else + { + std::cerr << "Syntaxe: " << argv[0] << " port out_file" << std::endl; + return 1; + } + return 0; +} -- cgit v1.2.3