Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
 Аватар для SergKr
67 / 41 / 3
Регистрация: 07.12.2010
Сообщений: 328

Как написать небольшой клиент-сервер

27.10.2011, 01:38. Показов 1526. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ну ни как не получается у меня создать маленький клиент-сервер. Пишу на VB2010. По примерам с форума у меня только здоровенные коды в которых я начинаю путаться. Может быть есть у кого примерчик? Мне надо чтоб сервер слушал порт, клиент из TextBox'а переслал серверу сообщение, а сервер приняв сообщение переслал клиенту другое сообщение. И всё! А то у меня получается оооочень большие коды. Разве нельзя как-нибудь без потоков обойтись и вообще малыми жертвами?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.10.2011, 01:38
Ответы с готовыми решениями:

Как написать небольшой клиент-сервер
Всем привет. Мне нужно написать два приложения: Первое пустое, оно выступает в роли сервера, а второе приложение должно быть клиентом и...

Как написать сервер-клиент на c++?
Мне нужно написать сервер, который будет отправлять клиенту единичку аля: "Все хорошо, я включен". А клиент будет подсчитывать сколько...

Как написать простой клиент-сервер
Доброго времени суток господа. Возникла маленькая проблемка. Пытаюсь разобраться с сокетами, но пока не очень хорошо получается. Задачка...

2
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
27.10.2011, 01:45
Цитата Сообщение от SergKr Посмотреть сообщение
А то у меня получается оооочень большие коды
А что в вашем понимании означает "большой код"? Тысяч десять строк на класс?
Выложите то, что у вас получилось, а мы подрехтуем. Если оно того требует.
0
 Аватар для SergKr
67 / 41 / 3
Регистрация: 07.12.2010
Сообщений: 328
27.10.2011, 02:05  [ТС]
Да тут голову сломать можно.
Клиент:
VB.NET
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
Imports System.IO
Imports System.Net
 
 
Public Class frmLChoice
    Dim Client_UDP_output As New System.Net.Sockets.UdpClient
    Dim Client_UDP_input As New System.Net.Sockets.UdpClient
    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", MyIP As String = "192.168.0.156"
 
 
    Private Sub frmLChoice_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.Text = "Запуск Программы..."
        cmdOK.Text = "ОК"
        cmdExit.Text = "Выход"
        lstVibor.Items.Add("Программа")
        lstVibor.Items.Add("Конфигуратор")
        lstVibor.SelectedIndex = 0
        txtPassword.PasswordChar = "*"
 
    End Sub
    Sub sendTXT(ByVal xTxt As String, ByVal Ip As String, Optional ByVal Port As Integer = 10101)
        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" 
    End Sub
    Private Sub start_thread()
        Try
            ListenerThread = New Threading.Thread(AddressOf DoListen)
            ListenerThread.Start()
            'Me.TextBox2.Text &= "[Прослушивание сообщений] mode ON"
        Catch ex As Exception
            MsgBox(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
                o = Split(returnData, "|")
                If o(0) = "NU" Then
                    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
                            'AddUsrs()
                        End If
                    Next
                ElseIf o(0) = "MSG" Then
                    'If Me.ReturnData_toMainThread(o(1)) = "Server" Then
                    Me.ReturnData_toMainThread(returnData, True)
                    'End If
                ElseIf o(0) = "SRV" Then
                    'If Me.ReturnData_toMainThread(o(1)) = "Server" Then
                    Me.ReturnData_toMainThread(returnData, True)
                    'TextBox3.Text = returnData
                    'sendTXT("OK. Проканало", IPServ, 10101)
                ElseIf o(0) = "OK" Then
                    Me.ReturnData_toMainThread(o(1), True)
                    'sendTXT("sanda", IPServ, 10101)
 
                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
                        End If
                    Next
                    'AddUsrs()
                ElseIf o(0) = "RE" Then
                    'Dim snd() As String = Split(o(1), "|")
                    'For ich As Integer = 0 To snd.Length - 1
                    'Dim jk() As String = Split(snd(ich), ":")
                    'polsovatel(ich + 1, 0) = jk(0)
                    'polsovatel(ich + 1, 1) = jk(1)
                    'Next
                    'AddUsrs()
                    Me.ReturnData_toMainThread(returnData, True)
                End If
            Catch ex As Exception
                ListenerThread.Abort()
                Me.ReturnData_toMainThread(ex.Message, True)
            End Try
        Loop
    End Sub
 
    
    '===================================== 
    Private Delegate Sub MSG_Delegate(ByVal Text As String, ByVal oop As String)
 
    Private Sub ReturnData_toMainThread(ByVal Text As String, ByVal oop As String)
        ' является ли вызвавший поток родным потоком окна? 
        'TextBox3.Text = Text
        If Not Me.InvokeRequired Then
            ' вызвать родной, незащищенный метод формы 
            If oop = True Then
                Me.TextBox2.Text &= vbNewLine & Text
                If Len(TextBox2.Text) > 500 Then TextBox2.Text = Mid(TextBox2.Text, 400)
                TextBox2.SelectionStart = Len(TextBox2.Text)
                TextBox2.ScrollToCaret()
                TextBox3.Text = Text
                Dim stroka() As String
                stroka = Split(TextBox3.Text, "|")
                Select Case stroka(1)
                    Case Is = MyIP
                        Select Case stroka(2)
                            Case Is = "OK"
                                TextBox1.Text = "OKClient"
                                sendTXT("CL|" & MyIP & "|" & TextBox1.Text, IPServ, 10101)
                            Case Is = "POL"
                                'MsgBox("ok")
                                frmPOL.ListBox1.Items.Add(stroka(3))
                            Case Is = "POLExit"
                                frmPOL.Text = "Выберите пользователя..."
                                frmPOL.Button1.Text = "Выбрать"
                                frmPOL.Button2.Text = "Выход"
 
                                frmPOL.Show()
 
                        End Select
 
                End Select
            Else
                If Text = "|CLEAR|" Then
                    ListBox1.Items.Clear()
                Else
                    ListBox1.Items.Add(Text)
                End If
            End If
        Else
            ' косвенный вызов метода 
            Dim d As System.Delegate = New MSG_Delegate(AddressOf ReturnData_toMainThread)
            ' асинхронно вызвать этот же метод, с теми же параметрами. 
            Me.BeginInvoke(d, New String() {Text, oop})
        End If
    End Sub
 
    Private Sub cmdExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdExit.Click
        'Me.ListenerThread.Abort()
        Me.Close()
    End Sub
 
    Private Sub cmdOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdOK.Click
        Select Case lstVibor.SelectedIndex
            Case Is = 0
                On Error Resume Next
                Client_UDP_input.ExclusiveAddressUse = False
                Client_UDP_output.ExclusiveAddressUse = False
                Client_UDP_input.Close()
                Client_UDP_output.Close()
                Client_UDP_output = New System.Net.Sockets.UdpClient
                Client_UDP_input = New System.Net.Sockets.UdpClient(4321)
                'NickName = InputBox("Введите ваш никнайм", "NickName", "NewUser")
                sendTXT("NU|" & MyIP & "|" & i.AddressList(0).ToString, IPServ, 10101)
                'MsgBox("ok")
                Me.start_thread()
 
 
                'Me.Hide()
                'frmLoad.Show()
                'Me.Close()
            Case Is = 1
                Select Case txtPassword.Text
                    Case Is = "Mseb2011"
                        frmConfig.Show()
                    Case Else
                        txtPassword.Text = ""
                        MessageBox.Show("Не правильно введён пароль!!!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                        txtPassword.Select()
                End Select
        End Select
    End Sub
 
    Private Sub lstVibor_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lstVibor.SelectedIndexChanged
        Select Case lstVibor.SelectedIndex
            Case Is = 0
                txtPassword.Visible = False
            Case Is = 1
                txtPassword.Visible = True
                txtPassword.Select()
        End Select
    End Sub
Сервер:
VB.NET
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
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.10.2011, 02:05
Помогаю со студенческими работами здесь

Как написать socket (клиент-сервер) на Си?
Как написать сокет (клиент-сервер) на си,который находит алгебраическое дополнение к элементам матрицы размерности N,с помощью метода...

Как написать приложение клиент-сервер?
как написать приложение типа клиент-сервер на Java, поставил Java(TM) Web Services Developer Pack 1.1, в котором есть сервер TomCat....

Взаимодействие WinCC с Labview 2013, как сервер-клиент, так и клиент-сервер
Здравствуйте. Интересует информация о взаимодействии WinCC с Labview 2013, как сервер-клиент, так и клиент-сервер через ОРС-инфтерфейс. ...

Как написать приложение клиент - сервер на Java
Вообщем вопрос такой. В нашем универе есть сеть. Как мне написать приложение клиент-сервер на Java, чтобы я допустим запустил сервер на...

Онлайн игра, надо написать асинхронные клиент-сервер и сервер-посредник на C#
Доброго времени суток гос-да программисты. У меня к Вам предложение о сотрудничестве. Есть совершенно новый, совсем сырой проект онлайн...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru