source: trunk/ab5.0/ablib/src/Classes/System/Net/SocketAddress.ab@ 648

Last change on this file since 648 was 648, checked in by OverTaker, 16 years ago

IPEndPointの実装

File size: 2.1 KB
Line 
1
2/*!
3 @brief sockaddr構造体のラップ
4 @author OverTaker
5 @date 2008/10/08
6*/
7
8
9
10Namespace System
11Namespace Net
12
13Class SocketAddress
14 item As *Byte
15 itemSize As Long
16Public
17
18 /*!
19 @brief コンストラクタ。アドレスファミリを指定して初期化する。
20 @param アドレスファミリ
21 */
22 Sub SocketAddress(family As Sockets.AddressFamily)
23 Select Case family
24 Case System.Net.Sockets.AddressFamily.InterNetwork
25 init(family, SizeOf(sockaddr_in))
26 Case System.Net.Sockets.AddressFamily.InterNetworkV6
27 init(family, SizeOf(sockaddr_in6))
28 Case Else
29 init(family, SizeOf(sockaddr))
30 End Select
31 End Sub
32
33 /*!
34 @brief コンストラクタ。アドレスファミリと大きさを指定して初期化する。
35 @param アドレスファミリ
36 @param 大きさ
37 */
38 Sub SocketAddress(family As Sockets.AddressFamily, size As Long)
39 init(family, size)
40 End Sub
41
42 /*!
43 @brief デストラクタ
44 */
45 Sub ~SocketAddress()
46 If item <> NULL Then free(item)
47 End Sub
48
49 /*!
50 @brief アドレスファミリを取得する
51 @return アドレスファミリ
52 */
53 Function AddressFamily() As Sockets.AddressFamily
54 Return New Sockets.AddressFamily(Items->sa_family, "AddressFamily")
55 End Function
56
57 /*!
58 @brief sockaddrを取得する
59 @return sockaddrを示すアドレス
60 */
61 Function Items() As *sockaddr
62 Return item As *sockaddr
63 End Function
64
65 /*!
66 @brief sockaddrの大きさを取得する
67 @return sockaddrの大きさ
68 */
69 Function Size() As Long
70 Return itemSize
71 End Function
72
73 /*!
74 @brief 等しいかどうかを取得する
75 @retval True 等しい
76 @retval False 等しくない
77 */
78 Function Equals(address As SocketAddress) As Boolean
79 If This.Size = address.Size Then
80 Dim i As Long
81 For i = 0 To ELM(Size)
82 If This.item[i] <> address.item[i] Then Return False
83 Next
84 Return True
85 Else
86 Return False
87 End If
88 End Function
89
90Private
91
92 /*!
93 @brief 初期化する
94 @param アドレスファミリ
95 @param 確保するsockaddrの大きさ
96 */
97 Sub init(family As DWord, size As Long)
98 itemSize = size
99 item = calloc( itemSize )
100 Items->sa_family = family As Word
101 End Sub
102End Class
103
104End Namespace
105End Namespace
Note: See TracBrowser for help on using the repository browser.