ServerSocket.h
上传用户:market2
上传日期:2018-11-18
资源大小:18786k
文件大小:2k
源码类别:

外挂编程

开发平台:

Windows_Unix

  1. /*
  2.  *  OpenKore C++ Standard Library
  3.  *  Copyright (C) 2006  VCL
  4.  *
  5.  *  This library is free software; you can redistribute it and/or
  6.  *  modify it under the terms of the GNU Lesser General Public
  7.  *  License as published by the Free Software Foundation; either
  8.  *  version 2.1 of the License, or (at your option) any later version.
  9.  *
  10.  *  This library is distributed in the hope that it will be useful,
  11.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  13.  *  Lesser General Public License for more details.
  14.  *
  15.  *  You should have received a copy of the GNU Lesser General Public
  16.  *  License along with this library; if not, write to the Free Software
  17.  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
  18.  *  MA  02110-1301  USA
  19.  */
  20. #ifndef _OSL_SERVER_SOCKET_H_
  21. #define _OSL_SERVER_SOCKET_H_
  22. #include "../Object.h"
  23. #include "Socket.h"
  24. namespace OSL {
  25. /**
  26.  * A TCP/IP server socket.
  27.  *
  28.  * @class ServerSocket OSL/Net/ServerSocket.h
  29.  * @ingroup Net
  30.  */
  31. class ServerSocket: public Object {
  32. public:
  33. /**
  34.  * Create a new ServerSocket.
  35.  *
  36.  * @param ip    The IP address to bind this server socket to,
  37.  *              or NULL to not bind to a specific address.
  38.  * @param port  The port to start the server socket on, or 0
  39.  *              to use an available port.
  40.  * @post !result->isClosed()
  41.  * @post if port != 0: result->getPort() == port
  42.  * @throws SocketException
  43.  */
  44. static ServerSocket *create(const char *ip = NULL, unsigned short port = 0);
  45. /**
  46.  * Accept a new client.
  47.  *
  48.  * @param timeout The maximum time (in miliseconds) to wait for a client
  49.  *                before this function returns. Specify -1 to wait forever.
  50.  * @return A new client Socket, or NULL on time out.
  51.  * @post timeout >= -1
  52.  * @post !isClosed()
  53.  * @throws IOException
  54.  */
  55. virtual Socket *accept(int timeout = -1) = 0;
  56. /**
  57.  * Close the server socket. The accepted clients are NOT closed:
  58.  * you will have to close them manually.
  59.  *
  60.  * @post isClosed()
  61.  */
  62. virtual void close() = 0;
  63. /**
  64.  * Returns the port of this server socket.
  65.  *
  66.  * @post result > 0
  67.  */
  68. virtual unsigned short getPort() = 0;
  69. /**
  70.  * Check whether the server socket is closed.
  71.  */
  72. virtual bool isClosed() = 0;
  73. };
  74. }
  75. #endif /* _OSL_SERVER_SOCKET_H_ */