Boost logo

Boost :

From: David Abrahams (david.abrahams_at_[hidden])
Date: 2001-12-18 20:54:14


Until yahoogroups gets their bug fixed, please use the files section to
transmit what you'd normally put in an attachment. I could disable
attachments, but then how would we know when YG fixes the bug?

----- Original Message -----
From:
To: <boost_at_[hidden]>
Sent: Tuesday, December 18, 2001 5:11 PM
Subject: [boost] sockets library

>

----------------------------------------------------------------------------

----
> //
> // Definitions of socket classes for boost
> //
>
> #include <string>
> #include <sstream>
>
> #ifndef boost_sockets
> #define boost_sockets
>
>
>
> //
> // Creates a client socket
> //
> class client_socket : private socket
> {
>  public:
>
>   client_socket ( std::string host, int port );
>   virtual ~client_socket(){};
>
>   const client_socket& operator << ( const std::string& ) const;
>   const client_socket& operator >> ( std::string& ) const;
>   const client_socket& operator << ( const marshallable& ) const;
>   const client_socket& operator >> ( marshallable& ) const;
> };
>
>
>
>
> //
> // Creates a server socket
> //
> class server_socket : private socket
> {
>  public:
>
>   server_socket ( int port );
>   server_socket (){};
>   virtual ~server_socket();
>
>   const server_socket& operator << ( const std::string& ) const;
>   const server_socket& operator >> ( std::string& ) const;
>   const server_socket& operator << ( const marshallable& ) const;
>   const server_socket& operator >> ( marshallable& ) const;
>
>   void accept ( server_socket& );
>
> };
>
>
>
>
> //
> // Inherit from marshallable and implement
> // marshal and unmarshal to allow your class
> // to be sent across a socket.
> //
> class marshallable
> {
>  public:
>   marshallable(){};
>   ~marshallable(){};
>
>   virtual void marshal ( std::ostringstream& );
>   virtual void unmarshal ( std::istringstream& );
> };
>
>
>
>
> //
> // exception class
> //
> class socket_exception
> {
>  public:
>   socket_exception ( std;:string );
>   ~socket_exception();
> };
>
>
>
> //
> // Most of the implementation is in here. We
> // can have a different class for each platform.
> //
> class socket
> {
>
>  public:
>
>   socket();
>   virtual ~socket();
>
>   // Server initialization
>   bool create();
>   bool bind ( const int port );
>   bool listen() const;
>   bool accept ( Socket& ) const;
>
>   // Client initialization
>   bool connect ( const std::string host, const int port );
>
>   // Data Transimission
>   bool send ( const std::string ) const;
>   int recv ( std::string& ) const;
>
>   bool is_valid() const { return m_sock != -1; }
>
>  private:
>
>   int m_sock;
>   sockaddr_in m_addr;
>
> };
>
>
>
> #endif
>

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk