Develop and Download Open Source Software

Browse Subversion Repository

Contents of /SocketX/PeerSocket.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 16 - (show annotations) (download) (as text)
Mon Jun 28 05:40:57 2010 UTC (13 years, 11 months ago) by sho1get
File MIME type: text/x-c++src
File size: 2105 byte(s)
Update_20100628
1 #pragma once
2
3 #include "stdafx.h"
4 #include "SocketX.h"
5
6 //////////////////////////////////////////////////////////////////////////
7
8 IMPLEMENT_DYNAMIC(CPeerSocket, IBaseSocket)
9
10 CPeerSocket::CPeerSocket()
11 {
12 }
13
14 CPeerSocket::~CPeerSocket()
15 {
16 }
17
18 BOOL CPeerSocket::CreateSocket(SOCKMSG SockMsg)
19 {
20 return doCreateSocket(SockMsg, SOCK_DGRAM, IPPROTO_UDP);
21 }
22
23 void CPeerSocket::OnClose(SOCKET hSocket, int nErrorCode)
24 {
25 NETADDR NetAddr;
26
27 if (nErrorCode != 0)
28 {
29 TRACE1("***** ERROR: OnClose(%d) *****\n", nErrorCode);
30 return;
31 }
32
33 if (CloseSocket())
34 {
35 ConvertSockAddrToNetAddr(&m_PeerAddr, NetAddr);
36 m_SockMsg.pCallback->OnSocketCloseMessage(m_SockMsg.dwSocketID, NetAddr);
37 }
38 }
39
40 void CPeerSocket::OnSend(SOCKET hSocket, int nErrorCode)
41 {
42 if (nErrorCode != 0)
43 {
44 TRACE1("***** ERROR: OnSend(%d) *****\n", nErrorCode);
45 return;
46 }
47
48 m_SockMsg.pCallback->OnSocketSendMessage(m_SockMsg.dwSocketID);
49 }
50
51 void CPeerSocket::OnReceive(SOCKET hSocket, int nErrorCode)
52 {
53 CByteArray data;
54 SOCKADDR sAddr;
55 NETADDR NetAddr;
56 int nLenSA = sizeof(SOCKADDR);
57
58 if (nErrorCode != 0)
59 {
60 TRACE1("***** ERROR: OnReceive(%d) *****\n", nErrorCode);
61 return;
62 }
63
64 if (!doReceiveFrom(hSocket, data, &sAddr, &nLenSA))
65 {
66 return;
67 }
68
69 ConvertSockAddrToNetAddr(&sAddr, NetAddr);
70 m_SockMsg.pCallback->OnSocketReceiveFromMessage(m_SockMsg.dwSocketID, NetAddr, data);
71 }
72
73 BOOL CPeerSocket::Initialize(SOCKMSG SockMsg, DWORD dwLocalAddress, WORD wPort)
74 {
75 SOCKADDR_IN sAddrIn;
76
77 if (!CreateSocket(SockMsg))
78 {
79 return FALSE;
80 }
81
82 if (!Bind(wPort, dwLocalAddress))
83 {
84 CloseSocket();
85 return FALSE;
86 }
87
88 if (!(SetSendBufferSize(SX_UDP_BUFSIZE) && SetReceiveBufferSize(SX_UDP_BUFSIZE)))
89 {
90 CloseSocket();
91 return FALSE;
92 }
93
94 sAddrIn.sin_family = AF_INET;
95 sAddrIn.sin_port = htons(wPort);
96 sAddrIn.sin_addr.s_addr = dwLocalAddress;
97 CopyMemory(&m_LocalAddr, &sAddrIn, sizeof(m_LocalAddr));
98
99 m_fInit = TRUE;
100
101 return TRUE;
102 }
103
104 //////////////////////////////////////////////////////////////////////////

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