1 |
pjm2 |
1.1 |
VERSION 5.00 |
2 |
|
|
Object = "{248DD890-BB45-11CF-9ABC-0080C7E7B78D}#1.0#0"; "MSWINSCK.OCX" |
3 |
|
|
Begin VB.Form Form1 |
4 |
|
|
BorderStyle = 3 'Fixed Dialog |
5 |
|
|
Caption = "TCP/UDP Test program" |
6 |
|
|
ClientHeight = 5655 |
7 |
|
|
ClientLeft = 45 |
8 |
|
|
ClientTop = 330 |
9 |
|
|
ClientWidth = 5670 |
10 |
|
|
LinkTopic = "Form1" |
11 |
|
|
MaxButton = 0 'False |
12 |
|
|
MinButton = 0 'False |
13 |
|
|
ScaleHeight = 5655 |
14 |
|
|
ScaleWidth = 5670 |
15 |
|
|
ShowInTaskbar = 0 'False |
16 |
|
|
StartUpPosition = 3 'Windows Default |
17 |
|
|
Begin VB.CommandButton Command3 |
18 |
|
|
Caption = "TCP to Filter" |
19 |
|
|
Height = 375 |
20 |
|
|
Left = 3720 |
21 |
pjm2 |
1.4 |
TabIndex = 5 |
22 |
pjm2 |
1.1 |
Top = 2520 |
23 |
|
|
Width = 1575 |
24 |
|
|
End |
25 |
|
|
Begin VB.TextBox Text4 |
26 |
|
|
Height = 2535 |
27 |
|
|
Left = 240 |
28 |
|
|
MultiLine = -1 'True |
29 |
|
|
ScrollBars = 2 'Vertical |
30 |
pjm2 |
1.4 |
TabIndex = 4 |
31 |
pjm2 |
1.1 |
Text = "nettest.frx":0000 |
32 |
|
|
Top = 3000 |
33 |
|
|
Width = 5055 |
34 |
|
|
End |
35 |
|
|
Begin VB.CommandButton Command2 |
36 |
|
|
Caption = "TCP to FilterManager" |
37 |
|
|
Height = 375 |
38 |
|
|
Left = 3360 |
39 |
pjm2 |
1.4 |
TabIndex = 3 |
40 |
pjm2 |
1.1 |
Top = 2040 |
41 |
|
|
Width = 1935 |
42 |
|
|
End |
43 |
|
|
Begin MSWinsockLib.Winsock Winsock2 |
44 |
|
|
Left = 4920 |
45 |
|
|
Top = 120 |
46 |
|
|
_ExtentX = 741 |
47 |
|
|
_ExtentY = 741 |
48 |
|
|
_Version = 393216 |
49 |
|
|
End |
50 |
|
|
Begin VB.CommandButton Command1 |
51 |
|
|
Caption = "Send UDP" |
52 |
|
|
Height = 375 |
53 |
|
|
Left = 4320 |
54 |
|
|
TabIndex = 2 |
55 |
|
|
Top = 1560 |
56 |
|
|
Width = 975 |
57 |
|
|
End |
58 |
|
|
Begin VB.TextBox Text1 |
59 |
|
|
Height = 855 |
60 |
|
|
Left = 360 |
61 |
|
|
TabIndex = 0 |
62 |
|
|
Text = "<packet></packet>" |
63 |
|
|
Top = 600 |
64 |
|
|
Width = 4935 |
65 |
|
|
End |
66 |
|
|
Begin MSWinsockLib.Winsock Winsock1 |
67 |
|
|
Left = 4320 |
68 |
|
|
Top = 120 |
69 |
|
|
_ExtentX = 741 |
70 |
|
|
_ExtentY = 741 |
71 |
|
|
_Version = 393216 |
72 |
|
|
Protocol = 1 |
73 |
|
|
End |
74 |
|
|
Begin VB.Label Label1 |
75 |
|
|
Caption = "Packet contents" |
76 |
|
|
Height = 255 |
77 |
|
|
Left = 360 |
78 |
|
|
TabIndex = 1 |
79 |
|
|
Top = 360 |
80 |
|
|
Width = 2895 |
81 |
|
|
End |
82 |
|
|
End |
83 |
|
|
Attribute VB_Name = "Form1" |
84 |
|
|
Attribute VB_GlobalNameSpace = False |
85 |
|
|
Attribute VB_Creatable = False |
86 |
|
|
Attribute VB_PredeclaredId = True |
87 |
|
|
Attribute VB_Exposed = False |
88 |
pjm2 |
1.4 |
Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long |
89 |
|
|
Private Declare Function GetPrivateProfileInt Lib "kernel32" Alias "GetPrivateProfileIntA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal nDefault As Long, ByVal lpFileName As String) As Long |
90 |
|
|
|
91 |
|
|
Dim filterManagerHostname As String |
92 |
|
|
Dim filterManagerTCPPort As Integer |
93 |
|
|
|
94 |
pjm2 |
1.2 |
Dim filterHostname As String |
95 |
pjm2 |
1.3 |
Dim filterTCPPort As Integer |
96 |
|
|
Dim filterUDPPort As Integer |
97 |
|
|
Dim fileList As String |
98 |
|
|
Dim lastModified As String |
99 |
pjm2 |
1.2 |
|
100 |
|
|
Dim protocolVersion As String |
101 |
|
|
Dim connected As Boolean |
102 |
pjm2 |
1.1 |
Dim responseNumber As Integer |
103 |
|
|
|
104 |
|
|
|
105 |
|
|
Private Sub Command1_Click() |
106 |
|
|
|
107 |
pjm2 |
1.4 |
xml = "<packet></packet>" |
108 |
|
|
|
109 |
pjm2 |
1.2 |
' Use the first winsock control to send a UDP packet. |
110 |
pjm2 |
1.4 |
Winsock1.RemoteHost = filterHostname |
111 |
|
|
Winsock1.RemotePort = filterUDPPort |
112 |
|
|
Winsock1.SendData xml |
113 |
pjm2 |
1.1 |
|
114 |
|
|
End Sub |
115 |
|
|
|
116 |
|
|
Private Sub Command2_Click() |
117 |
|
|
|
118 |
pjm2 |
1.3 |
' establish a TCP connection to a filtermanager |
119 |
pjm2 |
1.1 |
Winsock2.Close |
120 |
pjm2 |
1.4 |
Winsock2.Connect filterManagerHostname, filterManagerTCPPort |
121 |
pjm2 |
1.1 |
|
122 |
|
|
End Sub |
123 |
|
|
|
124 |
|
|
Private Sub Command3_Click() |
125 |
pjm2 |
1.3 |
' establish a TCP connection to a filter |
126 |
|
|
Winsock2.Close |
127 |
|
|
Winsock2.Connect filterHostname, filterTCPPort |
128 |
pjm2 |
1.1 |
End Sub |
129 |
|
|
|
130 |
pjm2 |
1.2 |
Private Sub Form_Load() |
131 |
|
|
protocolVersion = "1.1" |
132 |
pjm2 |
1.4 |
|
133 |
|
|
''''TEMP |
134 |
|
|
filterManagerHostname = "killigrew.ukc.ac.uk" |
135 |
|
|
filterManagerTCPPort = 4567 |
136 |
|
|
Exit Sub |
137 |
|
|
''' ENDTEMP |
138 |
|
|
|
139 |
|
|
On Error GoTo iniError |
140 |
|
|
Dim buf As String * 256 |
141 |
|
|
Dim length As Long |
142 |
|
|
length = GetPrivateProfileString("i-scream Winhost", "FilterManager", "<no value>", buf, Len(buf), App.Path & "winhost.ini") |
143 |
|
|
filterManagerHostname = Left$(buf, length) |
144 |
|
|
length = GetPrivateProfileString("i-scream Winhost", "FilterManagerPort", "<no value>", buf, Len(buf), App.Path & "winhost.ini") |
145 |
|
|
filterManagerTCPPort = Left$(buf, length) |
146 |
|
|
|
147 |
|
|
Exit Sub |
148 |
|
|
|
149 |
|
|
iniError: |
150 |
|
|
x = MsgBox("The i-scream Winhost could not read the correct settings from the winhost.ini file. Please correct these and try again.", 48, "Configuration not found") |
151 |
|
|
End |
152 |
|
|
|
153 |
|
|
End Sub |
154 |
|
|
|
155 |
|
|
Private Sub Label2_Click() |
156 |
|
|
|
157 |
pjm2 |
1.2 |
End Sub |
158 |
|
|
|
159 |
pjm2 |
1.1 |
Private Sub Winsock2_Connect() |
160 |
|
|
|
161 |
|
|
responseNumber = 0 |
162 |
|
|
|
163 |
pjm2 |
1.3 |
' Send something as soon as we connect to the server. |
164 |
|
|
If connected = False Then |
165 |
|
|
' contact the FilterManager |
166 |
|
|
Winsock2.SendData "STARTCONFIG" & vbCrLf |
167 |
|
|
Else |
168 |
|
|
' Contact the Filter |
169 |
|
|
Winsock2.SendData "HEARTBEAT" & vbCrLf |
170 |
|
|
End If |
171 |
pjm2 |
1.1 |
|
172 |
|
|
End Sub |
173 |
|
|
|
174 |
|
|
Private Sub Winsock2_DataArrival(ByVal bytesTotal As Long) |
175 |
|
|
|
176 |
|
|
responseNumber = responseNumber + 1 |
177 |
|
|
|
178 |
|
|
' Get the line from the server. |
179 |
|
|
Winsock2.GetData response, vbString, bytesTotal |
180 |
|
|
|
181 |
|
|
' Remove linefeeds and returns from the line. |
182 |
|
|
response = Replace(response, Chr(13), "") |
183 |
|
|
response = Replace(response, Chr(10), "") |
184 |
|
|
Text4.Text = Text4.Text & vbCrLf & response |
185 |
|
|
|
186 |
pjm2 |
1.2 |
If connected = False Then |
187 |
|
|
' Perform TCP configuration (1.1) |
188 |
|
|
On Error GoTo configError |
189 |
|
|
Select Case responseNumber |
190 |
|
|
Case 1: |
191 |
|
|
If Not response = "OK" Then GoTo configError |
192 |
|
|
Winsock2.SendData "LASTMODIFIED" & vbCrLf |
193 |
|
|
Case 2: |
194 |
|
|
If response = "ERROR" Then GoTo configError |
195 |
pjm2 |
1.3 |
lastModified = response |
196 |
pjm2 |
1.2 |
Winsock2.SendData "FILELIST" & vbCrLf |
197 |
|
|
Case 3: |
198 |
|
|
If response = "ERROR" Then GoTo configError |
199 |
pjm2 |
1.3 |
fileList = response |
200 |
pjm2 |
1.2 |
Winsock2.SendData "UDPUpdateTime" & vbCrLf |
201 |
|
|
Case 4: |
202 |
|
|
If response = "ERROR" Then GoTo configError |
203 |
|
|
Winsock2.SendData "TCPUpdateTime" & vbCrLf |
204 |
|
|
Case 5: |
205 |
|
|
If response = "ERROR" Then GoTo configError |
206 |
|
|
Winsock2.SendData "ENDCONFIG" & vbCrLf |
207 |
|
|
Case 6: |
208 |
|
|
If Not response = "OK" Then GoTo configError |
209 |
|
|
Winsock2.SendData "FILTER" & vbCrLf |
210 |
|
|
Case 7: |
211 |
|
|
'we got a filter list here. |
212 |
|
|
readTo = 0 |
213 |
|
|
' get hostname |
214 |
|
|
readTo = InStr(1, response, ";", vbBinaryCompare) |
215 |
|
|
filterHostname = Mid(response, 1, readTo - 1) |
216 |
|
|
response = Mid(response, readTo + 1, Len(response)) |
217 |
|
|
' get UDP Port number |
218 |
|
|
readTo = InStr(1, response, ";") |
219 |
|
|
filterUDPPort = Mid(response, 1, readTo - 1) |
220 |
|
|
response = Mid(response, readTo + 1, Len(response)) |
221 |
|
|
' get TCP Port number |
222 |
|
|
filterTCPPort = response |
223 |
|
|
Winsock2.SendData "END" & vbCrLf |
224 |
|
|
Case 8: |
225 |
|
|
If Not response = "OK" Then GoTo configError |
226 |
|
|
connected = True |
227 |
|
|
responseNumber = 0 |
228 |
|
|
Winsock2.Close |
229 |
|
|
Text4.Text = Text4.Text & vbCrLf & " <closed>" |
230 |
|
|
x = MsgBox("got config okay") |
231 |
|
|
End Select |
232 |
|
|
Else |
233 |
|
|
' Perform a heartbeat (1.1) |
234 |
|
|
On Error GoTo heartbeatError |
235 |
|
|
Select Case responseNumber |
236 |
|
|
Case 1: |
237 |
pjm2 |
1.3 |
If Not response = "OK" Then GoTo heartbeatError |
238 |
|
|
Winsock2.SendData "CONFIG" & vbCrLf |
239 |
pjm2 |
1.2 |
Case 2: |
240 |
pjm2 |
1.3 |
If Not response = "OK" Then GoTo heartbeatError |
241 |
|
|
Winsock2.SendData fileList & vbCrLf |
242 |
pjm2 |
1.2 |
Case 3: |
243 |
pjm2 |
1.3 |
If Not response = "OK" Then GoTo heartbeatError |
244 |
|
|
Winsock2.SendData lastModified & vbCrLf |
245 |
pjm2 |
1.2 |
Case 4: |
246 |
pjm2 |
1.3 |
If Not response = "OK" Then GoTo heartbeatError |
247 |
|
|
Winsock2.SendData "ENDHEARTBEAT" & vbCrLf |
248 |
pjm2 |
1.2 |
Case 5: |
249 |
pjm2 |
1.3 |
If Not response = "OK" Then GoTo heartbeatError |
250 |
|
|
Winsock2.Close |
251 |
|
|
x = MsgBox("heartbeat sent okay.") |
252 |
pjm2 |
1.2 |
End Select |
253 |
|
|
|
254 |
|
|
End If |
255 |
|
|
|
256 |
|
|
|
257 |
|
|
Exit Sub |
258 |
|
|
|
259 |
|
|
configError: |
260 |
|
|
x = MsgBox("error doing configuration") |
261 |
|
|
heartbeatError: |
262 |
pjm2 |
1.4 |
x = MsgBox("error doing configuration") |
263 |
pjm2 |
1.1 |
End Sub |