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

外挂编程

开发平台:

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_SOCKET_H_
  21. #define _OSL_SOCKET_H_
  22. #include "../Exception.h"
  23. #include "../IO/InputStream.h"
  24. #include "../IO/OutputStream.h"
  25. namespace OSL {
  26. /**
  27.  * Thrown when a socket exception occurs.
  28.  *
  29.  * @class SocketException OSL/Net/Socket.h
  30.  * @ingroup Net
  31.  */
  32. class SocketException: public Exception {
  33. public:
  34. SocketException(const char *message = NULL, int code = 0);
  35. };
  36. /**
  37.  * Thrown when a hostname cannot be resolved.
  38.  *
  39.  * @class HostNotFoundException OSL/Net/Socket.h
  40.  * @ingroup Net
  41.  */
  42. class HostNotFoundException: public Exception {
  43. public:
  44. HostNotFoundException(const char *message = NULL, int code = 0);
  45. };
  46. /**
  47.  * A TCP/IP client socket.
  48.  *
  49.  * When this class is destroyed, its input and out streams are closed
  50.  * and dereferenced.
  51.  *
  52.  * @class Socket OSL/Net/Socket.h
  53.  * @ingroup Net
  54.  */
  55. class Socket: public Object {
  56. public:
  57. /**
  58.  * Initialize the socket subsystem. You must call this function
  59.  * once before using sockets.
  60.  *
  61.  * On Windows, this initialize WinSock. On other platform
  62.  * this does nothing.
  63.  */
  64. static void init();
  65. /**
  66.  * Create a new socket and connect it.
  67.  *
  68.  * @param address The address of the server to connect to.
  69.  * @param port    The port of the server.
  70.  * @pre   init() must have been called once.
  71.  * @pre   address != NULL
  72.  * @pre   port > 0
  73.  * @post  result != NULL
  74.  * @throws SocketException, IOException
  75.  */
  76. static Socket *create(const char *address, unsigned short port);
  77. /**
  78.  * Returns the input stream for this socket. This stream can be
  79.  * used to receive data from the socket.
  80.  *
  81.  * @note
  82.  *    When read() returns -1, it means that the peer
  83.  *    has closed the connection. read() will never return 0.
  84.  *
  85.  * @note
  86.  *    This stream is thread-safe.
  87.  *
  88.  * @post result != NULL
  89.  */
  90. virtual InputStream *getInputStream() const = 0;
  91. /**
  92.  * Returns the output stream for this socket.
  93.  * This stream can be used to send data through the socket.
  94.  *
  95.  * You may want to wrap a BufferedOutputStream arround this
  96.  * for performance gains, unless you're writing large chunks of
  97.  * data at a time.
  98.  *
  99.  * @note
  100.  *    This stream is thread-safe.
  101.  *
  102.  * @post result != NULL
  103.  */
  104. virtual OutputStream *getOutputStream() const = 0;
  105. };
  106. }
  107. #endif /* _OSL_SOCKET_H_ */