raSystem  1.0 bata
raSocket.cpp
Go to the documentation of this file.
1 #include "..\include\raMain.h"
2 #include <ws2def.h>
3 
4 namespace System
5 {
6  FD_SET raSocket::fdSetSend;
7  FD_SET raSocket::fdSetRecv;
8 
10  {
11  DWORD ipv6only = 0;
12 
13  m_SocketAddress.sin_family = RA_INET;
14  /*m_SocketAddress.sin_port = 1234;
15  m_SocketAddress.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");*/
16 
17  int err = WSAStartup(MAKEWORD( 2, 2 ), &m_WSAData);
18  if ( err != 0 )
19  {
20  char buf[64];
21  sprintf(buf, "WinSock 2.2 kann nicht gestartet werden, Fehler Code %d", err);
22  RERROR(buf);
23  }
24  m_Socket = ::socket(RA_INET, SOCK_STREAM, IPPROTO_TCP);
25  if (m_Socket == INVALID_SOCKET)
26  {
27  char buf[64];
28  sprintf(buf, "Create Socket, Fehler Code %d", err);
29  RERROR(buf);
30  return;
31  }
32  }
33 
34  raSocket::raSocket(SOCKET socket)
35  {
36  int err = WSAStartup(MAKEWORD(2, 2), &m_WSAData);
37  if ( err != 0 )
38  {
39  char buf[64];
40  sprintf(buf, "WinSock kann nicht gestartet werden, Fahler Code", err);
41  RERROR(buf);
42  }
43  m_Socket = socket;
44  }
46  {
47  closesocket(m_Socket);
48  WSACleanup();
49  }
50  void raSocket::fdzero(bool write)
51  {
52  if(write)
53  FD_ZERO(&fdSetSend);
54  else
55  FD_ZERO(&fdSetRecv);
56  }
57  void raSocket::fdset(bool write)
58  {
59  if(m_Socket != INVALID_SOCKET)
60  {
61  if(write)
62  FD_SET(m_Socket, &fdSetSend);
63  else
64  FD_SET(m_Socket, &fdSetRecv);
65  }
66  }
67  void raSocket::fdclr(bool write)
68  {
69  if(m_Socket != INVALID_SOCKET)
70  {
71  if(write)
72  FD_CLR(m_Socket, &fdSetSend);
73  else
74  FD_CLR(m_Socket, &fdSetRecv);
75  }
76  }
77  void raSocket::select(bool write)
78  {
79  struct timeval t = {0, 5};
80  if(write)
81  ::select(0, NULL, &fdSetSend, NULL, &t);
82  else
83  ::select(0, &fdSetRecv, NULL, NULL, &t);
84  }
86  {
87  if(FD_ISSET(m_Socket, &fdSetRecv))
88  {
89  return ::recv(m_Socket, m_recvbuf, RECVBUFLEN, 0);
90  }
91  return -1;
92  }
93  bool raSocket::Send(LPCSTR Data, int Size)
94  {
95  if(FD_ISSET(m_Socket, &fdSetSend))
96  {
97  int iRet = ::send(m_Socket, Data, Size, 0);
98  if(iRet == SOCKET_ERROR)
99  {
100  printf("Socket nicht vorhanden");
101  return false;
102  }
103  }
104  return true;
105  }
106 };
static FD_SET fdSetSend
Definition: raSocket.h:33
void fdclr(bool write)
Definition: raSocket.cpp:67
static void fdzero(bool write)
Definition: raSocket.cpp:50
static void select(bool write)
Definition: raSocket.cpp:77
raSocket(void)
Definition: raSocket.cpp:9
static FD_SET fdSetRecv
Definition: raSocket.h:34
int Receive(void)
Definition: raSocket.cpp:85
bool Send(LPCSTR Data, int Size)
Definition: raSocket.cpp:93
#define RA_INET
~raSocket(void)
Definition: raSocket.cpp:45
void fdset(bool write)
Definition: raSocket.cpp:57
void RAPI RERROR(raString x)
Definition: raMain.cpp:129