www.pudn.com > simplec++codeforp2p.rar > socket.h


// ------------------------------------------------
// File : socket.h
// Date: 4-apr-2002
// Author: giles
// Desc: 
//
// (c) 2002 peercast.org
// ------------------------------------------------
// 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.
// ------------------------------------------------

#ifndef _SOCKET_H
#define _SOCKET_H


#include "common.h"
#include "stream.h"

#define DISABLE_NAGLE 1

// --------------------------------------------------
class ClientSocket : public Stream
{
public:

	ClientSocket()
	{
		readTimeout = 30000; 
		writeTimeout = 30000; 
	}

    // required interface
	virtual void	open(Host &) = 0;
	virtual void	bind(Host &) = 0;
	virtual void	connect() = 0;
	virtual bool	active() = 0;
	virtual ClientSocket	*accept() = 0;
	virtual Host	getLocalHost() = 0; 
 
	virtual void	setReadTimeout(unsigned int t) 
	{ 
		readTimeout = t; 
	} 
	virtual void	setWriteTimeout(unsigned int t) 
	{ 
		writeTimeout = t; 
	} 
	virtual void	setBlocking(bool) {} 
 

    static unsigned int    getIP(char *);
	static bool			getHostname(char *,unsigned int); 

    virtual bool eof()
    {
        return active()==false;
    }

    Host    host;

	unsigned int readTimeout,writeTimeout; 
};


#endif