⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sockinet.h

📁 《CODE READING》配套书源代码 《CODE READING》配套书源代码
💻 H
字号:
// sockinet.h -*- C++ -*- socket library// Copyright (C) 1992-1996 Gnanasekaran Swaminathan <gs4t@virginia.edu>//// Permission is granted to use at your own risk and distribute this software// in source and  binary forms provided  the above copyright notice and  this// paragraph are  preserved on all copies.  This software is provided "as is"// with no express or implied warranty.//// Version: 12Jan97 1.11#ifndef _SOCKINET_H#define	_SOCKINET_H#include <sockstream.h>#include <netinet/in.h>class sockinetaddr: public sockAddr, public sockaddr_in {protected:  void                setport (const char* sn, const char* pn="tcp");  void                setaddr (const char* hn);public:                      ~sockinetaddr () {}  		      sockinetaddr ();  		      sockinetaddr (unsigned long addr, int port_no=0);  		      sockinetaddr (const char* host_name, int port_no=0);  		      sockinetaddr (unsigned long addr,				    const char* service_name,				    const char* protocol_name="tcp");  		      sockinetaddr (const char* host_name,				    const char* service_name,				    const char* protocol_name="tcp");  		      sockinetaddr (const sockinetaddr& sina);                          operator void* () const { return addr_in (); }  sockaddr_in*        addr_in () const { return (sockaddr_in*) this; }  int                 size  () const { return sizeof (sockaddr_in); }  int                 family() const { return sin_family; }  sockaddr*           addr  () const { return (sockaddr*) addr_in (); }  int                 getport    () const;  const char*         gethostname() const;};class sockinetbuf: public sockbuf {public:  enum domain { af_inet = AF_INET };      		      sockinetbuf (const sockbuf::sockdesc& sd);  		      sockinetbuf (const sockinetbuf& si): sockbuf (si) {}  		      sockinetbuf (sockbuf::type ty, int proto=0);  		      sockinetbuf&        operator=(const sockinetbuf& si);  		      ~sockinetbuf () {}    sockinetaddr        localaddr() const;  int                 localport() const;  const char*         localhost() const;      sockinetaddr        peeraddr() const;  int                 peerport() const;  const char*         peerhost() const;  void                bind_until_success (int portno);  virtual void        bind (sockAddr& sa);  void		      bind (int port_no=0); // addr is assumed to be INADDR_ANY                                            // and thus defaults to local host  void		      bind (unsigned long addr, int port_no);  void		      bind (const char* host_name, int port_no=0);  void		      bind (unsigned long addr,			    const char* service_name,			    const char* protocol_name="tcp");  void		      bind (const char* host_name,			    const char* service_name,			    const char* protocol_name="tcp");  virtual void	      connect (sockAddr& sa);  void		      connect (unsigned long addr, int port_no);  void		      connect (const char* host_name, int port_no);  void		      connect (unsigned long addr,			       const char* service_name,			       const char* protocol_name="tcp");  void		      connect (const char* host_name,			       const char* service_name,			       const char* protocol_name="tcp");  virtual sockdesc    accept ();  virtual sockdesc    accept (sockAddr& sa);  sockdesc            accept (unsigned long addr, int port_no);  sockdesc            accept (const char* host_name, int port_no);  bool                tcpnodelay () const;  bool                tcpnodelay (bool set) const;};class isockinet: public isockstream{public:                      isockinet (const sockbuf::sockdesc& sd);  		      isockinet (const sockinetbuf& sb);  		      isockinet (sockbuf::type ty=sockbuf::sock_stream,				 int proto=0);  		      ~isockinet ();        sockinetbuf*        rdbuf () { return (sockinetbuf*)ios::rdbuf (); }  sockinetbuf*	      operator -> () { return rdbuf (); }};class osockinet: public osockstream{public:                      osockinet (const sockbuf::sockdesc& sd);  		      osockinet (const sockinetbuf& sb);  		      osockinet (sockbuf::type ty=sockbuf::sock_stream,				 int proto=0);  		      ~osockinet ();        sockinetbuf*	      rdbuf () { return (sockinetbuf*)ios::rdbuf (); }  sockinetbuf*	      operator -> () { return rdbuf (); }};class iosockinet: public iosockstream{public:                      iosockinet (const sockbuf::sockdesc& sd);  		      iosockinet (const sockinetbuf& sb);  		      iosockinet (sockbuf::type ty=sockbuf::sock_stream,				  int proto=0);  		      ~iosockinet ();       sockinetbuf*	      rdbuf () { return (sockinetbuf*)ios::rdbuf (); }  sockinetbuf*	      operator -> () { return rdbuf (); }};#endif	// _SOCKINET_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -