📄 socketconnection.hpp
字号:
/*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Library General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
// SocketConnection.hpp - Copyright (C) 2002, Simon Brenner
#ifndef _SocketConnection_hpp_included
#define _SocketConnection_hpp_included
#include "FdConnection.hpp"
#include <netdb.h>
struct SocketAddress
{};
struct IPSocketAddress
{
// All in host byte order
uint32 ip;
uint16 port;
inline IPSocketAddress():
ip(0), port(0)
{}
inline IPSocketAddress(uint32 nip, uint16 nport): ip(nip), port(nport)
{}
inline IPSocketAddress(const char *name, uint16 nport):
ip(0), port(nport)
{
hostent *hostinfo=gethostbyname(name);
if (hostinfo != NULL)
{
ip=ntohl(((struct in_addr *)hostinfo->h_addr)->s_addr);
}
}
inline sockaddr *fill_sockaddr(void *buf) const
{
sockaddr_in *ret=(sockaddr_in *)buf;
ret->sin_family=AF_INET;
ret->sin_port=htons(port);
ret->sin_addr.s_addr=htonl(ip);
return (sockaddr *)ret;
}
inline uint sockaddr_len() const
{ return sizeof(sockaddr_in); }
};
class SocketConnection: public FdConnection
{
protected:
char *default_srv;
int default_srvport;
int MakeSocket(int socktype);
SocketConnection(char *, int);
SocketConnection(int);
SocketConnection();
virtual int Connect(const IPSocketAddress &)=0;
virtual int Bind(int port, int socktype); // socktype is SOCK_STREAM, SOCK_DGRAM a.s.o.
public:
virtual ~SocketConnection();
virtual void Disconnect();
virtual int Bind(int)=0;
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -