Source: classlib/include/socket.h
|
|
|
|
/***************************************************************************
socket.h - description
-------------------
begin : Sat Sep 28 2002
copyright : (C) 2002 by Nicola De Nisco
email : nicola@winada.it
***************************************************************************/
/***************************************************************************
* *
* 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. *
* *
***************************************************************************/
#ifndef SOCKET_H
#define SOCKET_H
#include
#include
#include
#include
/**
class Socket
Implementazione di una classe per la gestione dei socket TCP,UDP,UNIX.
Questa classe semplifica la gestione dei socket sia dal lato client
che dal lato server di una applicazione.
Vedi serverex.cpp e clientex.cpp per un esempio di implementazione.
*/
class Socket
{
public:
Socket();
virtual ~Socket();
inline int operator==(const Socket& s) const {return &s == this;}
union traddr {unsigned char dotted[4]; uint intero; };
class DatagramPacket
{
public:
DatagramPacket(int size);
DatagramPacket(LPVOID buffer, int size);
virtual ~DatagramPacket();
inline void cpaddrfrom(const DatagramPacket& dgram) {
taddress = dgram.taddress;
}
inline void cpaddrfrom(const Socket& sock) {
taddress = *(sock.getTCPaddress());
}
public:
struct sockaddr_in taddress;
LPVOID data;
int lenData;
BOOL autoFree;
};
public:
virtual int initServerTCP(int port);
virtual int initServerUDP(int port);
virtual int initServerUNIX(LPCSTR sockName);
virtual int initClientTCP(LPCSTR server, int port);
virtual int initClientUDP(LPCSTR server, int port);
virtual int initClientUNIX(LPCSTR sockName);
virtual int close();
virtual int getSocket() const {return sock;}
virtual const sockaddr_in* getTCPaddress() const {return &taddress;}
virtual const sockaddr_un* getUNIXaddress() const {return &uaddress;}
virtual traddr getTCPtraddr() const;
virtual LPCSTR getTCPaddr() const;
virtual int read(LPVOID buffer, int len);
virtual int write(LPVOID buffer, int len);
virtual int send(LPVOID buffer, int len, int flags = MSG_NOSIGNAL);
virtual int recv(LPVOID buffer, int len, int flags = MSG_NOSIGNAL | MSG_WAITALL);
virtual int sendmsg(LPBYTE buffer, int len);
virtual int recvmsg(LPBYTE buffer, int len);
virtual int sendmsg(struct msghdr *msg, uint flags);
virtual int recvmsg(struct msghdr *msg, uint flags);
virtual int sendUDP(DatagramPacket& packet, int flags = MSG_NOSIGNAL);
virtual int recvUDP(DatagramPacket& packet, int flags = MSG_NOSIGNAL | MSG_WAITALL);
virtual Socket* acceptTCP();
virtual Socket* acceptUNIX();
virtual int getRxCount(int handle) const;
virtual int LeggiNumeroByteRX(int handle, int* NumBytes) const;
virtual int WaitRxCount(int handle, int Count) const;
protected:
int sock, port;
struct sockaddr_in taddress;
struct sockaddr_un uaddress;
LPSTR peer;
int lenListenQueue;
struct hostent* host;
int TimeoutWait;
};
#endif
Generated by: nicola on gulliver.wadahome.it on Sun May 25 13:54:34 2003, using kdoc 2.0a53. |