summaryrefslogtreecommitdiff
path: root/i/simulotron/src/socket/socket_client.cc
diff options
context:
space:
mode:
authorhaller2005-12-03 18:10:59 +0000
committerhaller2005-12-03 18:10:59 +0000
commit2e87c72204b7e2627af6ce9af3566509d239ef15 (patch)
tree504b13a16ecdce175e43bb37315b43c571932590 /i/simulotron/src/socket/socket_client.cc
parent6e48eaad66126f83480729a38dca1897f2066c11 (diff)
Mise au normes RCS des fichiers du commit (enfin je crois)
Diffstat (limited to 'i/simulotron/src/socket/socket_client.cc')
-rw-r--r--i/simulotron/src/socket/socket_client.cc92
1 files changed, 60 insertions, 32 deletions
diff --git a/i/simulotron/src/socket/socket_client.cc b/i/simulotron/src/socket/socket_client.cc
index 3b7b05b..1224389 100644
--- a/i/simulotron/src/socket/socket_client.cc
+++ b/i/simulotron/src/socket/socket_client.cc
@@ -1,3 +1,27 @@
+/* socket_client.cc - Définition de la classe des sockets client */
+/* Simulotron - Programme de simulation de robot {{{
+ *
+ * Copyright (C) 2005 Nicolas Haller
+ *
+ * Robot APB Team/Efrei 2005.
+ * Web: http://assos.efrei.fr/robot/
+ * Email: robot AT efrei DOT fr
+ *
+ * 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.
+ *
+ * }}} */
#include "socket/socket_client.hh"
#include "socket/socket_server.hh"
#include "socket/address.hh"
@@ -6,81 +30,85 @@
#include <sys/socket.h>
#include <cerrno>
-SocketClient::SocketClient(const Address & address)
+SocketClient::SocketClient (const Address & address)
{
// Crée le file descriptor du socket
socket_ = socket (PF_INET, SOCK_STREAM, 0);
- if(socket_ < 0)
+ if (socket_ < 0)
throw errno_exception ("La chaussette n'a pas pu être tricoté", errno);
-
// On bind le socket
- if(::bind (socket_, address.getSockaddr(), sizeof(*address.getSockaddr())) < 0)
- throw errno_exception("Impossible d'assigner la chausette", errno);
+ if (::bind (socket_, address.getSockaddr (), sizeof (*address.getSockaddr ())) < 0)
+ throw errno_exception ("Impossible d'assigner la chausette", errno);
}
-SocketClient::SocketClient(SocketServer & socketServer)
+SocketClient::SocketClient (SocketServer & socketServer)
{
- socket_ = socketServer.accept();
+ socket_ = socketServer.accept ();
if (socket_ < 0)
- throw errno_exception("Problème lors de la construction d'une chaussette cliente par accept", errno);
+ throw errno_exception ("Problème lors de la construction d'une chaussette cliente par accept", errno);
}
-SocketClient::~SocketClient(void)
+SocketClient::~SocketClient (void)
{
- if(socket_ >= 0)
- ::close(socket_);
+ if (socket_ >= 0)
+ ::close (socket_);
}
-void SocketClient::connect(const Address & address)
+void
+SocketClient::connect (const Address & address)
{
- if (::connect (socket_, address.getSockaddr(), sizeof(sockaddr_in)) < 0)
- throw errno_exception("Impossible de mettre la chaussette", errno);
+ if (::connect (socket_, address.getSockaddr (), sizeof (sockaddr_in)) < 0)
+ throw errno_exception ("Impossible de mettre la chaussette", errno);
}
-std::string SocketClient::read(void)
+std::string
+SocketClient::read (void)
{
std::string str;
int charReaded;
char buffer[BUFFER_SIZE];
do
{
- charReaded = ::read(socket_, buffer, BUFFER_SIZE - 1);
- if(charReaded < 0)
- throw errno_exception("SocketClient: problème de lecture", errno);
+ charReaded = ::read (socket_, buffer, BUFFER_SIZE - 1);
+ if (charReaded < 0)
+ throw errno_exception ("SocketClient: problème de lecture", errno);
buffer[charReaded] = 0;
str += buffer;
- }while(charReaded == BUFFER_SIZE - 1);
+ }while (charReaded == BUFFER_SIZE - 1);
return str;
}
-void SocketClient::write(const std::string & str)
+void
+SocketClient::write (const std::string & str)
{
char buffer[BUFFER_SIZE];
unsigned int pos = 0;
int retval = 0;
- while(str.size() != pos)
+ while (str.size () != pos)
{
- int size = str.size() - pos < BUFFER_SIZE - 1 ? str.size() - pos:BUFFER_SIZE - 1;
- str.copy(buffer, size, pos);
+ int size = str.size () - pos < BUFFER_SIZE - 1 ? str.size () - pos:BUFFER_SIZE - 1;
+ str.copy (buffer, size, pos);
pos += size;
buffer[size] = 0;
- retval = ::write(socket_, buffer, size);
- if(retval < 0)
- throw errno_exception("SocketClient: erreur d'écriture (write()) ", errno);
+ retval = ::write (socket_, buffer, size);
+ if (retval < 0)
+ throw errno_exception ("SocketClient: erreur d'écriture (write()) ", errno);
}
}
-char SocketClient::getChar(void)
+char
+SocketClient::getChar (void)
{
char getted;
- if(::read(socket_, &getted, 1) < 0)
- throw errno_exception("SocketClient: erreur d'écriture (write()) ", errno);
+ if (::read (socket_, &getted, 1) < 0)
+ throw errno_exception ("SocketClient: erreur d'écriture (write()) ", errno);
return getted;
}
-void SocketClient::putChar(char c)
+void
+SocketClient::putChar (char c)
{
- if(::write(socket_, &c, 1) < 0)
- throw errno_exception("SocketClient: erreur d'écriture (write()) ", errno);
+ if (::write (socket_, &c, 1) < 0)
+ throw errno_exception ("SocketClient: erreur d'écriture (write()) ", errno);
}