#ifndef TCPIP_SERVER_H
#define TCPIP_SERVER_H

/*!
  \file
  \brief TCP/IP 接続用のサーバ

  \author Satofumi KAMIMURA

  $Id: tcpipServer.h 286 2008-10-20 09:40:22Z satofumi $
*/

#include "tcpipDevice.h"


/*!
  \brief TCP/IP サーバクラス
*/
class TcpipServer : private TcpipDevice {
#if !HAVE_CONFIG_H || HAVE_LIBSDL_NET
  IPaddress ip;
  TCPsocket accept_socket;
  SDLNet_SocketSet accept_set;
#endif

public:
  TcpipServer(void);
  ~TcpipServer(void);

  /*!
    \brief 接続待ちポートの起動

    \param port [i] ポート番号
  */
  void activate(unsigned short port);

  static std::string getOwnIP(void);

  /*!
    \brief 接続受け付け

    \param timeout [i] タイムアウト [msec]
    \param eachCheckSockets [i] 受信チェックをソケット毎に行う場合 true
    \retval TcpipDevice オブジェクト
  */
  TcpipDevice* accept(int timeout = 0, bool eachCheckSockets = true);
};

#endif /* !TCPIP_SERVER_H */
