VSocket.h
上传用户:sbftbdw
上传日期:2007-01-03
资源大小:379k
文件大小:4k
源码类别:

远程控制编程

开发平台:

Visual C++

  1. //  Copyright (C) 1997, 1998 Olivetti & Oracle Research Laboratory
  2. //
  3. //  This file is part of the VNC system.
  4. //
  5. //  The VNC system is free software; you can redistribute it and/or modify
  6. //  it under the terms of the GNU General Public License as published by
  7. //  the Free Software Foundation; either version 2 of the License, or
  8. //  (at your option) any later version.
  9. //
  10. //  This program 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
  13. //  GNU General Public License for more details.
  14. //
  15. //  You should have received a copy of the GNU General Public License
  16. //  along with this program; if not, write to the Free Software
  17. //  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,
  18. //  USA.
  19. //
  20. // If the source code for the VNC system is not available from the place 
  21. // whence you received this file, check http://www.orl.co.uk/vnc or contact
  22. // the authors on vnc@orl.co.uk for information on obtaining it.
  23. // VSocket.h
  24. // RFB V3.0
  25. // The VSocket class provides simple socket functionality,
  26. // independent of platform.  Hurrah.
  27. class VSocket;
  28. #if (!defined(_ORL_VSOCKET_DEFINED))
  29. #define _ORL_VSOCKET_DEFINED
  30. #include "VTypes.h"
  31. ////////////////////////////
  32. // Socket implementation
  33. // Create one or more VSocketSystem objects per application
  34. class VSocketSystem
  35. {
  36. public:
  37. VSocketSystem();
  38. ~VSocketSystem();
  39. VBool Initialised() {return m_status;};
  40. private:
  41. VBool m_status;
  42. };
  43. // The main socket class
  44. class VSocket
  45. {
  46. public:
  47.   // Constructor/Destructor
  48.   VSocket();
  49.   virtual ~VSocket();
  50.   ////////////////////////////
  51.   // Socket implementation
  52.   // Create
  53.   //        Create a socket and attach it to this VSocket object
  54.   VBool Create();
  55.   // Shutdown
  56.   //        Shutdown the currently attached socket
  57.   VBool Shutdown();
  58.   // Close
  59.   //        Close the currently attached socket
  60.   VBool Close();
  61.   // Bind
  62.   //        Bind the attached socket to the specified port
  63.   VBool Bind(const VCard port);
  64.   // Connect
  65.   //        Make a stream socket connection to the specified port
  66.   //        on the named machine.
  67.   VBool Connect(const VString address, const VCard port);
  68.   // Listen
  69.   //        Set the attached socket to listen for connections
  70.   VBool Listen();
  71.   // Accept
  72.   //        If the attached socket is set to listen then this
  73.   //        call blocks waiting for an incoming connection, then
  74.   //        returns a new socket object for the new connection
  75.   VSocket *Accept();
  76.   // GetPeerName
  77.   //        If the socket is connected then this returns the name
  78.   //        of the machine to which it is connected.
  79.   //        This string MUST be copied before the next socket call...
  80.   VString GetPeerName();
  81.   // GetSockName
  82.   // If the socket exists then the name of the local machine
  83.   // is returned.  This string MUST be copied before the next
  84.   // socket call!
  85.   VString GetSockName();
  86.   // I/O routines
  87.   // Send and Read return the number of bytes sent or recieved.
  88.   VInt Send(const char *buff, const VCard bufflen);
  89.   VInt Read(char *buff, const VCard bufflen);
  90.   // SendExact and ReadExact attempt to send and recieve exactly
  91.   // the specified number of bytes.
  92.   VBool SendExact(const char *buff, const VCard bufflen);
  93.   VBool ReadExact(char *buff, const VCard bufflen);
  94.   ////////////////////////////
  95.   // Internal structures
  96. protected:
  97.   // The internal socket id
  98.   int sock;       
  99. };
  100. #endif // _ORL_VSOCKET_DEFINED