Develop and Download Open Source Software

Browse Subversion Repository

Annotation of /SocketX/PeerSocket.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 16 - (hide annotations) (download) (as text)
Mon Jun 28 05:40:57 2010 UTC (13 years, 9 months ago) by sho1get
File MIME type: text/x-c++src
File size: 2105 byte(s)
Update_20100628
1 sho1get 11 #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 sho1get 16 return doCreateSocket(SockMsg, SOCK_DGRAM, IPPROTO_UDP);
21 sho1get 11 }
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 sho1get 16 m_SockMsg.pCallback->OnSocketCloseMessage(m_SockMsg.dwSocketID, NetAddr);
37 sho1get 11 }
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 sho1get 16 m_SockMsg.pCallback->OnSocketSendMessage(m_SockMsg.dwSocketID);
49 sho1get 11 }
50    
51     void CPeerSocket::OnReceive(SOCKET hSocket, int nErrorCode)
52     {
53     CByteArray data;
54 sho1get 16 SOCKADDR sAddr;
55 sho1get 11 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 sho1get 16 if (!doReceiveFrom(hSocket, data, &sAddr, &nLenSA))
65 sho1get 11 {
66     return;
67     }
68    
69 sho1get 16 ConvertSockAddrToNetAddr(&sAddr, NetAddr);
70     m_SockMsg.pCallback->OnSocketReceiveFromMessage(m_SockMsg.dwSocketID, NetAddr, data);
71 sho1get 11 }
72    
73     BOOL CPeerSocket::Initialize(SOCKMSG SockMsg, DWORD dwLocalAddress, WORD wPort)
74     {
75 sho1get 16 SOCKADDR_IN sAddrIn;
76 sho1get 11
77     if (!CreateSocket(SockMsg))
78     {
79     return FALSE;
80     }
81    
82     if (!Bind(wPort, dwLocalAddress))
83     {
84     CloseSocket();
85     return FALSE;
86     }
87    
88 sho1get 16 if (!(SetSendBufferSize(SX_UDP_BUFSIZE) && SetReceiveBufferSize(SX_UDP_BUFSIZE)))
89 sho1get 11 {
90     CloseSocket();
91     return FALSE;
92     }
93    
94 sho1get 16 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 sho1get 11
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