Develop and Download Open Source Software

Browse Subversion Repository

Contents of /SocketX/RawSocket.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 11 - (show annotations) (download) (as text)
Wed Feb 10 18:21:00 2010 UTC (14 years, 2 months ago) by sho1get
File MIME type: text/x-c++src
File size: 1596 byte(s)


1 #pragma once
2
3 #include "stdafx.h"
4 #include "SocketX.h"
5
6 //////////////////////////////////////////////////////////////////////////
7
8 IMPLEMENT_DYNAMIC(CRawSocket, CPeerSocket)
9
10 CRawSocket::CRawSocket() :
11 m_fPromiscuous(FALSE)
12 {
13 }
14
15 CRawSocket::~CRawSocket()
16 {
17 }
18
19 BOOL CRawSocket::Initialize(SOCKMSG SockMsg, DWORD dwLocalAddress, WORD wPort)
20 {
21 SOCKADDR_IN siAddr;
22
23 if (!CreateSocket(SockMsg))
24 {
25 return FALSE;
26 }
27
28 if (!Bind(wPort, dwLocalAddress))
29 {
30 CloseSocket();
31 return FALSE;
32 }
33
34 if (!(SetSendBufferSize(SX_UDP_BUFSIZE) && SetSendBufferSize(SX_UDP_BUFSIZE)))
35 {
36 CloseSocket();
37 return FALSE;
38 }
39
40 siAddr.sin_family = AF_INET;
41 siAddr.sin_port = htons(wPort);
42 siAddr.sin_addr.s_addr = dwLocalAddress;
43 CopyMemory(&m_LocalAddr, &siAddr, sizeof(m_LocalAddr));
44
45 m_fInit = TRUE;
46
47 return TRUE;
48 }
49
50 BOOL CRawSocket::CreateSocket(SOCKMSG SockMsg)
51 {
52 if (!IBaseSocket::CreateSocketWindow())
53 {
54 return FALSE;
55 }
56
57 SetTargetWnd(SockMsg);
58
59 m_hSocket = socket(AF_INET, SOCK_RAW, IPPROTO_IP);
60
61 if (m_hSocket == INVALID_SOCKET)
62 {
63 TRACE1("***** ERROR: socket(%d) *****\n", GetLastError());
64 m_dwError = GetLastError();
65 return FALSE;
66 }
67
68 SetSendTimeout(m_dwSendTimeout);
69 SetRecieveTimeout(m_dwReceiveTimeout);
70
71 return TRUE;
72 }
73
74 BOOL CRawSocket::SetPromiscuous(BOOL flag)
75 {
76 DWORD dwOption = flag ? 1 : 0;
77
78 if (!IOCtlSocket(SIO_RCVALL, &dwOption))
79 {
80 return FALSE;
81 }
82
83 m_fPromiscuous = flag;
84
85 return TRUE;
86 }
87
88
89 //////////////////////////////////////////////////////////////////////////

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26