| 1 |
|
|---|
| 2 |
|
|---|
| 3 | Namespace System
|
|---|
| 4 | Namespace Net
|
|---|
| 5 | Namespace Sockets
|
|---|
| 6 |
|
|---|
| 7 | TypeDef SocketException = ActiveBasic.Windows.WindowsException
|
|---|
| 8 |
|
|---|
| 9 | Enum AddressFamily
|
|---|
| 10 | AppleTalk = PF_APPLETALK
|
|---|
| 11 | Atm = PF_ATM
|
|---|
| 12 | Banyan = PF_BAN
|
|---|
| 13 | Ccitt = PF_CCITT
|
|---|
| 14 | Chaos = PF_CHAOS
|
|---|
| 15 | ' Cluster
|
|---|
| 16 | DataKit = PF_DATAKIT
|
|---|
| 17 | ' DataLink
|
|---|
| 18 | DecNet = PF_DECnet
|
|---|
| 19 | Ecma = PF_ECMA
|
|---|
| 20 | FireFox = PF_FIREFOX
|
|---|
| 21 | ' HyperChannel
|
|---|
| 22 | ' Ieee12844
|
|---|
| 23 | ImpLink = PF_IMPLINK
|
|---|
| 24 | InterNetwork = PF_INET
|
|---|
| 25 | InterNetworkV6 = PF_INET6
|
|---|
| 26 | Ipx = PF_IPX
|
|---|
| 27 | ' Irda
|
|---|
| 28 | Iso = PF_ISO
|
|---|
| 29 | Lat = PF_LAT
|
|---|
| 30 | ' Max
|
|---|
| 31 | ' NetBios
|
|---|
| 32 | ' NetworkDesigners
|
|---|
| 33 | NS = PF_NS
|
|---|
| 34 | Osi = PF_OSI
|
|---|
| 35 | Pup = PF_PUP
|
|---|
| 36 | Sna = PF_SNA
|
|---|
| 37 | Unix = PF_UNIX
|
|---|
| 38 | Unknown = PF_UNKNOWN1
|
|---|
| 39 | Unspecified = PF_UNSPEC
|
|---|
| 40 | VoiceView = PF_VOICEVIEW
|
|---|
| 41 | End Enum
|
|---|
| 42 |
|
|---|
| 43 | Enum SocketType
|
|---|
| 44 | Stream = SOCK_STREAM
|
|---|
| 45 | Dgram = SOCK_DGRAM
|
|---|
| 46 | Raw = SOCK_RAW
|
|---|
| 47 | Rdm = SOCK_RDM
|
|---|
| 48 | Seqpacket = SOCK_SEQPACKET
|
|---|
| 49 | End Enum
|
|---|
| 50 |
|
|---|
| 51 | Enum ProtocolType
|
|---|
| 52 | Ggp = IPPROTO_GGP
|
|---|
| 53 | Icmp = IPPROTO_ICMP
|
|---|
| 54 | IcmpV6 = IPPROTO_ICMPV6
|
|---|
| 55 | Idp = IPPROTO_IDP
|
|---|
| 56 | Igmp = IPPROTO_IGMP
|
|---|
| 57 | IP = IPPROTO_IP
|
|---|
| 58 | IPSecAuthenticationHeader = IPPROTO_AH
|
|---|
| 59 | IPSecEncapsulatingSecurityPayload = IPPROTO_ESP
|
|---|
| 60 | IPv4 = IPPROTO_IPV4
|
|---|
| 61 | IPv6 = IPPROTO_IPV6
|
|---|
| 62 | IPv6DestinationOptions = IPPROTO_DSTOPTS
|
|---|
| 63 | IPv6FragmentHeader = IPPROTO_FRAGMENT
|
|---|
| 64 | ' IPv6HopByHopOptions
|
|---|
| 65 | IPv6NoNextHeader = IPPROTO_NONE
|
|---|
| 66 | IPv6RoutingHeader = IPPROTO_ROUTING
|
|---|
| 67 | Ipx
|
|---|
| 68 | ND = IPPROTO_ND
|
|---|
| 69 | Pup = IPPROTO_PUP
|
|---|
| 70 | Raw = IPPROTO_RAW
|
|---|
| 71 | ' Spx
|
|---|
| 72 | ' SpxII
|
|---|
| 73 | Tcp = IPPROTO_TCP
|
|---|
| 74 | Udp = IPPROTO_UDP
|
|---|
| 75 | ' Unknown
|
|---|
| 76 | ' Unspecified
|
|---|
| 77 | End Enum
|
|---|
| 78 |
|
|---|
| 79 | Enum SocketFlags
|
|---|
| 80 | None = 0
|
|---|
| 81 | OutOfBand = MSG_OOB
|
|---|
| 82 | Peek = MSG_PEEK
|
|---|
| 83 | DontRoute = MSG_DONTROUTE
|
|---|
| 84 | ' MaxIOVectorLength
|
|---|
| 85 | ' Truncated
|
|---|
| 86 | ' ControlDataTruncated
|
|---|
| 87 | ' Broadcast
|
|---|
| 88 | ' Multicast
|
|---|
| 89 | Pertical = MSG_PARTIAL
|
|---|
| 90 | End Enum
|
|---|
| 91 |
|
|---|
| 92 | /*!
|
|---|
| 93 | @brief Winsockを初期化するクラス
|
|---|
| 94 | @author OverTaker
|
|---|
| 95 | @date 2008/10/05
|
|---|
| 96 | */
|
|---|
| 97 | Class Winsock
|
|---|
| 98 | Static wsa As WSADATA
|
|---|
| 99 | Public
|
|---|
| 100 |
|
|---|
| 101 | /*!
|
|---|
| 102 | @brief Winsockの初期化を行う
|
|---|
| 103 | */
|
|---|
| 104 | Static Sub Initialize()
|
|---|
| 105 | Initialize(New Version(2, 2))
|
|---|
| 106 | End Sub
|
|---|
| 107 |
|
|---|
| 108 | /*!
|
|---|
| 109 | @brief Winsockを初期化する
|
|---|
| 110 | @param Winsockを初期化するバージョン
|
|---|
| 111 | */
|
|---|
| 112 | Static Sub Initialize(version As Version)
|
|---|
| 113 | If WSAStartup(MAKEWORD(version.Major, version.Minor), wsa) Then
|
|---|
| 114 | Throw New SocketException(WSAGetLastError(), "Winsock.Initalize")
|
|---|
| 115 | End If
|
|---|
| 116 | End Sub
|
|---|
| 117 |
|
|---|
| 118 | /*!
|
|---|
| 119 | @brief Winsockの終了処理を行う
|
|---|
| 120 | */
|
|---|
| 121 | Static Sub Finalize()
|
|---|
| 122 | If WSACleanup() = SOCKET_ERROR Then
|
|---|
| 123 | Throw New SocketException(WSAGetLastError(), "Winsock.Finalize")
|
|---|
| 124 | End If
|
|---|
| 125 | End Sub
|
|---|
| 126 |
|
|---|
| 127 | /*!
|
|---|
| 128 | @brief Winsockのバージョンを取得します
|
|---|
| 129 | @return バージョン
|
|---|
| 130 | */
|
|---|
| 131 | Static Function Version() As Version
|
|---|
| 132 | Return New System.Version(HIBYTE(wsa.wVersion), LOBYTE(wsa.wVersion))
|
|---|
| 133 | End Function
|
|---|
| 134 |
|
|---|
| 135 | /*!
|
|---|
| 136 | @brief OSで扱える最大のWinsockバージョンを取得します
|
|---|
| 137 | @return バージョン
|
|---|
| 138 | */
|
|---|
| 139 | Static Function HighVersion() As Version
|
|---|
| 140 | Return New System.Version(HIBYTE(wsa.wHighVersion), LOBYTE(wsa.wHighVersion))
|
|---|
| 141 | End Function
|
|---|
| 142 |
|
|---|
| 143 | /*!
|
|---|
| 144 | @brief Winsockの実装の説明を取得する
|
|---|
| 145 | @return 説明
|
|---|
| 146 | */
|
|---|
| 147 | Static Function Description() As String
|
|---|
| 148 | Return New String(wsa.szDescription As PCTSTR)
|
|---|
| 149 | End Function
|
|---|
| 150 |
|
|---|
| 151 | /*!
|
|---|
| 152 | @brief Winsockの状態を取得する
|
|---|
| 153 | @return 状態
|
|---|
| 154 | */
|
|---|
| 155 | Static Function SystemStatus() As String
|
|---|
| 156 | Return New String(wsa.szSystemStatus As PCTSTR)
|
|---|
| 157 | End Function
|
|---|
| 158 | End Class
|
|---|
| 159 |
|
|---|
| 160 | End Namespace
|
|---|
| 161 | End Namespace
|
|---|
| 162 | End Namespace
|
|---|