source: Sophya/trunk/AddOn/TAcq/swrapsock.h@ 3717

Last change on this file since 3717 was 3542, checked in by ansari, 17 years ago

Ajouts fichiers du repertoire Remote (Classes Socket, ServerSocker RawInOutSocketStream ...) et fichier README , Reza 23/10/2008

File size: 2.3 KB
Line 
1#ifndef SWRAPSOCK_H
2#define SWRAPSOCK_H
3
4#include "machdefs.h"
5#include "pexceptions.h"
6
7#include <unistd.h>
8#include <iostream>
9
10#include <sys/types.h>
11#include <sys/socket.h>
12#include <netinet/in.h>
13
14
15namespace SOPHYA {
16
17/*!
18 \class SocketException
19 \ingroup SysTools
20 \brief Exception class used by IP socket wrapper classes in SysTools module
21*/
22
23class SocketException : public PException {
24 public:
25 explicit SocketException(const char * m) : PException(m) {}
26 explicit SocketException(const string& m) : PException(m) {}
27};
28
29
30// --------------------------
31// Classe de base pour enrober l'initialisation et l'utilisation
32// des sockets pour les connections IP.
33// --------------------------
34
35class Socket {
36public:
37 Socket(int s=-1);
38 // Socket(Socket const & a);
39 ~Socket();
40
41 size_t Send(const char * buff, size_t len, int flag=0);
42 size_t Receive(char * buff, size_t len, int flag=0);
43 int Close();
44 inline int SetPrtLevel(int lev=0)
45 { if (lev > 0) prtlev = lev; return prtlev; }
46
47protected:
48
49 int skt;
50 long tstart; /* Temps de demarrage en sec */
51 long tlast; /* Temps de derniere acces en sec */
52 long totrcv; /* Nb total d'octets recus */
53 long totsnd; /* Nb total d'octets envoyes */
54 long dts; /* Dt en ms send (File or Data) */
55 long nbbs; /* Nb Octets send (File or Data) */
56 long dtr; /* Dt en ms recv (File or Data) */
57 long nbbr; /* Nb Octets recv (File or Data) */
58 long lstdt; /* Dt en ms last send or receive */
59 long lstnbb; /* Nb bytes last send or receive */
60 long errcnt; /* Total error count */
61 int prtlev;
62};
63
64
65// --------------------------
66// Classe ServerSocket - A instancier cote serveur
67// --------------------------
68
69class ServerSocket : public Socket
70{
71public :
72 ServerSocket(int port, int nconmax);
73 Socket WaitClientConnection();
74
75protected:
76 int portid;
77 struct sockaddr_in ipskt;
78 int NConMax;
79 int nclitot;
80};
81
82// --------------------------
83// Classe ClientSocket - A instancier cote client
84// --------------------------
85
86class ClientSocket : public Socket
87{
88public :
89 ClientSocket(string const& srvname, int port);
90 ClientSocket(const char* srvname, int port);
91protected:
92 void InitConnection(const char* srvname, int port);
93 int portid;
94 struct sockaddr_in ipskt;
95
96};
97
98} // Fin du namespace
99
100#endif
Note: See TracBrowser for help on using the repository browser.