1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
| Imports System.Net
Imports System.IO
Imports System.Windows.Forms
Imports System.Data.OleDb
Public Class Form1
Dim Client_UDP_output As New System.Net.Sockets.UdpClient
Dim Client_UDP_input As New System.Net.Sockets.UdpClient(10101)
Dim RemoteIpEndPoint As New IPEndPoint(IPAddress.Any, 0)
Dim ListenerThread As Threading.Thread
Dim polsovatel(100, 1) As String
Dim i As Net.IPHostEntry = Net.Dns.GetHostByName(Net.Dns.GetHostName)
Dim NickName As String, IPServ As String = "192.168.0.146"
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
sendTXT("MSG|" & NickName & "|" & TextBox1.Text, IPServ, 10101)
End Sub
Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
Me.Client_UDP_input.Close()
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Text = "Server МСЭБ 2011... build 2003"
'NickName = InputBox("Введите ваш никнайм", "NickName", "Server")
NickName = "Server"
'sendTXT("NU|" & NickName & "|" & i.AddressList(0).ToString, IPServ, 10101)
Dim fileInfo As New FileInfo(CurDir() & "\polsovat.mdb")
Dim pathBD As String
pathBD = CurDir() & "\polsovat.mdb"
Dim nach1 As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
Dim nach2 As String = ";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Password="
Dim BASEPass As String
BASEPass = My.Computer.Registry.GetValue("HKEY_Local_Machine\Software\ServMSEB", "BASEPass", "111")
Dim nach3 As String = BASEPass
Dim nach As String
nach = nach1 & pathBD & nach2 & nach3
If fileInfo.Exists() Then
Me.start_thread()
Else
Dim cat As New ADOX.Catalog
Try
cat.Create(nach)
'MessageBox.Show("База данных C:\NEW_bd.MDB успешно создана")
Catch ex As Exception
MessageBox.Show(ex.Message)
Me.Close()
End Try
Dim CONNECTION = New OleDbConnection(nach)
CONNECTION.Open()
Dim COMMAND As New OleDbCommand("CREATE TABLE [" &
"Пользователи] ([Фамилия] char(20), [Имя] ch" &
"ar(20), [Отчество] char(20), [Должность] char(20), [Пароль] char(20), [paramNewCard] ch" &
"ar (20), [paramEditCard] char (20), [paramDeletCard] char (20), [paramOtchetCard] ch" &
"ar (20), [paramCommandLine] char (20), [paramColorGWindow] char (20), [paramColorNewCard] ch" &
"ar (20), [paramLanguage] char (20), [paramTextRichBox] char (20), [paramPrinter] ch" &
"ar (20), [paramChat] char (20), [paramEditChat] char (20), [paramRassilka] ch" &
"ar (20), [paramSound] char (20))", CONNECTION)
Try
COMMAND.ExecuteNonQuery()
'MessageBox.Show("Структура таблицы 'БД телефонов' записана в пустую БД")
CONNECTION.Close()
'Добавление записи...
'Dim COMMAND = New OleDbCommand("INSERT INTO [бд телефонов] (" &
' "Фио, [номер телефона]) VALUES ('Сергей-Х','521-61-41')")
'COMMAND.Connection = CONNECTION
'COMMAND.ExecuteNonQuery()
'MessageBox.Show("В таблицу добавлена запись")
'CONNECTION.Close()
Catch Ex As Runtime.InteropServices.COMException
MessageBox.Show(Ex.Message)
Me.Close()
Finally
cat = Nothing
End Try
End If
End Sub
Sub sendTXT(ByVal xTxt As String, ByVal Ip As String, Optional ByVal Port As Integer = 4321)
Try
Dim sendBytes As [Byte]() = System.Text.Encoding.Default.GetBytes(xTxt)
Client_UDP_output.Send(sendBytes, sendBytes.Length, New IPEndPoint(IPAddress.Parse(Ip), Port)) ' "188.187.167.236"
Client_UDP_output = New System.Net.Sockets.UdpClient
Catch ex As Exception
Me.ReturnData_toMainThread(ex.Message)
End Try
End Sub
Private Sub start_thread()
Try
ListenerThread = New Threading.Thread(AddressOf DoListen)
ListenerThread.Start()
Me.TextBox2.Text &= "Сервер вроде запущен"
Catch ex As Exception
Me.TextBox2.Text &= ex.Message
End Try
End Sub
Private Sub DoListen()
Do While Not ListenerThread Is Nothing
Try
Dim receiveBytes As Byte() = Client_UDP_input.Receive(RemoteIpEndPoint)
Dim returnData As String = System.Text.Encoding.Default.GetString(receiveBytes)
Dim o() As String, raz As Boolean = False, count As Integer = 0
'TextBox3.Text = returnData
o = Split(returnData, "|")
If o(0) = "NU" Then
'TextBox3.Text = o(1)
For ich As Integer = 1 To 100
If Len(polsovatel(ich, 0)) = 0 And Not raz Then
polsovatel(ich, 0) = o(1)
polsovatel(ich, 1) = o(2)
raz = True
ElseIf Len(polsovatel(ich, 0)) > 0 Then
'count += 1
sendTXT(returnData, polsovatel(ich, 1))
End If
'ListBox1.Items.Add(o(1))
Next
'TextBox3.Text = o(1)
'ListBox1.Items.Add(o(1))
ElseIf o(0) = "MSG" Then
Dim pos(100) As String
For ich As Integer = 1 To 100
If Len(polsovatel(ich, 0)) > 0 Then
raz = True
For ij As Integer = 1 To 100
If polsovatel(ich, 1) = pos(ij) Then raz = False
Next
If raz Then
'count += 1
sendTXT(returnData, polsovatel(ich, 1))
pos(ich) = polsovatel(ich, 1)
Me.ReturnData_toMainThread(polsovatel(ich, 0) & " IP " & polsovatel(ich, 1))
End If
End If
Next
ElseIf o(0) = "EX" Then
For ich As Integer = 1 To 100
If polsovatel(ich, 1) = o(1) Then
polsovatel(ich, 0) = vbNullString
polsovatel(ich, 1) = vbNullString
ElseIf Len(polsovatel(ich, 1)) > 0 Then
sendTXT(returnData, polsovatel(ich, 1))
End If
Next
ElseIf o(0) = "RE" Then
Dim snd As String = vbNullString
For ich As Integer = 1 To 100
If ich > 1 Then snd &= "|"
If Len(polsovatel(ich, 0)) > 0 Then
snd &= polsovatel(ich, 0) & ":" & polsovatel(ich, 1)
End If
Next
sendTXT("RE|" & snd, o(1))
End If
Me.ReturnData_toMainThread(returnData)
Catch ex As Exception
ListenerThread.Abort()
Me.ReturnData_toMainThread(ex.Message)
End Try
Loop
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Me.ListenerThread.Abort()
Me.Client_UDP_input.Close()
Me.Client_UDP_input = New System.Net.Sockets.UdpClient(10101)
Me.start_thread()
End Sub
'=====================================
Private Delegate Sub MSG_Delegate(ByVal Text As String)
Private Sub ReturnData_toMainThread(ByVal Text As String)
' является ли вызвавший поток родным потоком окна?
If Not Me.InvokeRequired Then
' вызвать родной, незащищенный метод формы
If Len(TextBox2.Text) > 500 Then TextBox2.Text = vbNullString
Me.TextBox2.Text &= vbNewLine & Text
Me.TextBox2.SelectionStart = Len(TextBox2.Text)
TextBox3.Text = Text
'ЗДЕСЬ СМОТРИМ ЧЕГО ПРИШЛО И ОБРАБАТЫВАЕМ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
Dim stroka() As String
stroka = Split(TextBox3.Text, "|")
Select Case stroka(0)
Case Is = "NU"
ListBox1.Items.Add(stroka(1))
TextBox1.Text = "OK"
sendTXT("MSG|" & stroka(1) & "|" & TextBox1.Text, IPServ, 10101)
'sendTXT("OK|" & NickName, IPServ, 10101)
Case Is = "CL"
Select Case stroka(2)
Case Is = "OKClient"
'MsgBox("ok")
Dim pathBD As String
pathBD = CurDir() & "\polsovat.mdb"
Dim nach1 As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
Dim nach2 As String = ";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Password="
Dim BASEPass As String
BASEPass = My.Computer.Registry.GetValue("HKEY_Local_Machine\Software\ServMSEB", "BASEPass", "111")
Dim nach3 As String = BASEPass
Dim nach As String
nach = nach1 & pathBD & nach2 & nach3
Dim CONNECTION = New OleDbConnection(nach)
CONNECTION.Open()
Dim COMMAND As New System.Data.OleDb.OleDbCommand(
"Select * From [Пользователи]", CONNECTION)
Dim ADAPTER As New OleDbDataAdapter(COMMAND)
Dim DATASET As New DataSet
ADAPTER.Fill(DATASET, "Пользователи")
DataGridView1.DataSource = DATASET
DataGridView1.DataMember = "Пользователи"
CONNECTION.Close()
'frmTemp.TextBox1.Text = DataGridView1.Rows(0)
frmTemp.TextBox5.Text = DataGridView1.RowCount
Dim rowCount As Integer
Dim strPeredacha As String
rowCount = frmTemp.TextBox5.Text
For q = 0 To rowCount - 2
frmTemp.TextBox1.Text = DataGridView1.Rows(q).Cells(0).Value
frmTemp.TextBox2.Text = DataGridView1.Rows(q).Cells(1).Value
frmTemp.TextBox3.Text = DataGridView1.Rows(q).Cells(2).Value
frmTemp.TextBox4.Text = DataGridView1.Rows(q).Cells(3).Value
strPeredacha = frmTemp.TextBox1.Text & " " & Mid(frmTemp.TextBox2.Text, 1, 1) & " " & Mid(frmTemp.TextBox3.Text, 1, 1) & " - " & frmTemp.TextBox4.Text
TextBox1.Text = strPeredacha
sendTXT("MSG|" & stroka(1) & "|POL|" & TextBox1.Text, IPServ, 10101)
Next
sendTXT("MSG|" & stroka(1) & "|POLExit|", IPServ, 10101)
'frmTemp.Show()
End Select
End Select
Else
' косвенный вызов метода
Dim d As System.Delegate = New MSG_Delegate(AddressOf ReturnData_toMainThread)
' асинхронно вызвать этот же метод, с теми же параметрами.
Me.BeginInvoke(d, New String() {Text})
End If
End Sub
Private Sub ВыходToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ВыходToolStripMenuItem.Click
Me.Close()
End Sub
Private Sub ДобавитьПользователяToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ДобавитьПользователяToolStripMenuItem.Click
frmNewUser.Show()
End Sub
Private Sub ПарольToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ПарольToolStripMenuItem.Click
Dim BASEPass As String
BASEPass = My.Computer.Registry.GetValue("HKEY_Local_Machine\Software\ServMSEB", "BASEPass", "111")
Dim PassBase As String
PassBase = InputBox("Введите старый пароль...", "Смена пароля", , , )
Select Case PassBase
Case Is = BASEPass
Dim zapis As String
zapis = InputBox("Введите новый пароль...", "Смена пароля")
My.Computer.Registry.SetValue("HKEY_Local_Machine\Software\ServMSEB", "BASEPass", zapis)
Dim PathDB As String
Dim OldPassw As String
Dim NewPassw As String
PathDB = CurDir() & "\polsovat.mdb" 'путь к базe
OldPassw = PassBase 'текущий пароль
NewPassw = zapis 'новый пароль
Call ComactAndChangePasswordDB(PathDB, OldPassw, NewPassw)
End Select
End Sub
Private Sub ComactAndChangePasswordDB(ByVal PathDB As String, ByVal OldPassw As String, ByVal NewPassw As String)
Dim JRO As Object
Dim OldDB As String, NewDB As String
Dim StrPart1 As String, StrPart2 As String
OldDB = PathDB
NewDB = PathDB & "_Temp"
StrPart1 = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source="
StrPart2 = ";Jet OLEDB:Database Password="
JRO = CreateObject("JRO.JetEngine") 'создаем экземпляр объекта JetEngine
'сжатие и восстановление базы данных , замена пароля
JRO.CompactDatabase(StrPart1 & OldDB & StrPart2 & OldPassw, StrPart1 & NewDB & StrPart2 & NewPassw)
Kill(OldDB) 'удаляем "старую" базу
Dim sourceFileName As String = CurDir() & "\polsovat.mdb_Temp"
Dim destFileName As String = CurDir() & "\polsovat.mdb"
Dim fileInfo As New FileInfo(sourceFileName)
fileInfo.MoveTo(destFileName)
'Name NewDB As OldDB
'Присваиваем полученной, 'сжатой' БД ее прежнее имя
JRO = Nothing
End Sub
Sub MoveFile(ByVal fileInfo As FileInfo)
End Sub
End Class |