Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Использование pipes / 17 сообщений из 17, страница 1 из 1
07.08.2007, 13:54
    #34710748
boles
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование pipes
Добрый день!
Пытаюсь с помощью пайпов передать текст.
Код следующий:

Кто передает:

Dim res&
Dim written&
sndBlocked.Enabled = False
lblStat.Caption = "Waiting for client"
lblStat.Refresh
res = ConnectNamedPipe(pipehnd, 0)
If res <> 0 Or (res = 0 And GetLastError() = ERROR_PIPE_CONNECTED) Then
lblStat.Caption = "Sending data"
lblStat.Refresh
Код: plaintext
Dim buffer$
buffer$ = String$(200, "aaaaaaaa")
res = WriteFile(pipehnd, buffer, Len(buffer) + 1, written, 0)
Else
MsgBox "Client has disconnected"
End If
lblStat.Caption = "Idle"
sndBlocked.Enabled = True

Кто получает:

res = WaitNamedPipe(txtPipe.Text, 10000)
If res = 0 Then
MsgBox "Pipe is not available at this time"
Exit Sub
End If
pipehandle = CreateFile(txtPipe.Text, GENERIC_READ Or GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0)
If pipehandle = INVALID_HANDLE_VALUE Then
MsgBox "Can't open named pipe"
Exit Sub
End If
Dim inbuf As String
Dim bytesread&, bytesavail&, bytesleft&
res = ReadFile(pipehandle, inbuf, 512, bytesread, 0)
If res Then
Text1.Text = inbuf
End If

Подскажите, как мне нужно переписать выделенные строки, чтобы в окне получателя отобразился передаваемый текст?
Заранее спасибол!
...
Рейтинг: 0 / 0
07.08.2007, 16:31
    #34711431
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование pipes
На все ответить не могу, но замечу, что вместо GetLastError() вам надо использовать Err.LastDllError()
...
Рейтинг: 0 / 0
07.08.2007, 16:35
    #34711465
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование pipes
И еще: а какая необходимость в использовании pipes? Разве FSO не удобнее?
...
Рейтинг: 0 / 0
07.08.2007, 16:45
    #34711517
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование pipes
Вот здесь неплохой пример на pipes:

http://binaryworld.net/Main/CodeDetail.aspx?CodeId=3665
...
Рейтинг: 0 / 0
07.08.2007, 17:46
    #34711820
Бенедикт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование pipes
VladConnно замечу, что вместо GetLastError() вам надо использовать Err.LastDllError()Зависит от того, как описаны API-шные функции. Если они описаны в библиотеке типов без указания атрибута usesgetlasterror, то надо использовать GetLastError(). В противном случае (Declare, или в tlb с usesgetlasterror) - Err.LastDllError().
...
Рейтинг: 0 / 0
07.08.2007, 18:58
    #34712134
boles
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование pipes
VladConnИ еще: а какая необходимость в использовании pipes? Разве FSO не удобнее?

Т.е. передать строку через текстовый файл? Если вы именно это имели в виду, то не вариант...
...
Рейтинг: 0 / 0
07.08.2007, 19:06
    #34712166
boles
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование pipes
VladConnВот здесь неплохой пример на pipes:

http://binaryworld.net/Main/CodeDetail.aspx?CodeId=3665

Посмотрел, но мало чего понял... А особенно не нашел ответа на свой вопрос...

Может, кто-нибудь, кто хоть раз использовал пайпы, поможет мне поправить мой код? Мне это надо очень срочно, но о них я слышу впервые, поэтому сам вряд ли разберусь!
Заранее благодарю!
...
Рейтинг: 0 / 0
07.08.2007, 19:10
    #34712177
boles
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование pipes
Может, сразу объясните мне, что значат символы & и $ после переменной? Имею в виду следующую запись:

Код: plaintext
1.
Dim res&
Dim buffer$
...
Рейтинг: 0 / 0
07.08.2007, 20:00
    #34712261
VB6
VB6
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование pipes
Альтернативный способ обьявления переменных. Первое если не ошибаюсь Long а второе - String
...
Рейтинг: 0 / 0
07.08.2007, 20:30
    #34712310
boles
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование pipes
VB6Альтернативный способ обьявления переменных. Первое если не ошибаюсь Long а второе - String

Да? вот уж не думал...
спасибо!
...
Рейтинг: 0 / 0
07.08.2007, 21:28
    #34712374
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование pipes
Бенедикт VladConnно замечу, что вместо GetLastError() вам надо использовать Err.LastDllError()Зависит от того, как описаны API-шные функции. Если они описаны в библиотеке типов без указания атрибута usesgetlasterror, то надо использовать GetLastError(). В противном случае (Declare, или в tlb с usesgetlasterror) - Err.LastDllError().

Бенедикт, возможно и так, но microsoft здесь
http://msdn2.microsoft.com/en-us/library/ms679360.aspx
утверждает, что в VB - LastDllError.

С уважением
...
Рейтинг: 0 / 0
07.08.2007, 21:34
    #34712382
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование pipes
boles VB6Альтернативный способ обьявления переменных. Первое если не ошибаюсь Long а второе - String

Да? вот уж не думал...
спасибо!

Он оставлен для совместимости со старыми версиями. Рекомендуется использовать "as String, as Long" и т.д.
...
Рейтинг: 0 / 0
07.08.2007, 21:37
    #34712385
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование pipes
boles VladConnИ еще: а какая необходимость в использовании pipes? Разве FSO не удобнее?

Т.е. передать строку через текстовый файл? Если вы именно это имели в виду, то не вариант...

Но ведь вы сами используете WriteFile...
...
Рейтинг: 0 / 0
07.08.2007, 21:41
    #34712388
boles
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование pipes
VladConn boles VladConnИ еще: а какая необходимость в использовании pipes? Разве FSO не удобнее?

Т.е. передать строку через текстовый файл? Если вы именно это имели в виду, то не вариант...

Но ведь вы сами используете WriteFile...

Я все-таки считаю, что это не текстовый файл... Хотя кто его этого лешия знает :)
Объясните мне тогда, эти пайпы что ничем практически не отличаются от текстовых файлов или это просто функции именуются одинаково?
...
Рейтинг: 0 / 0
07.08.2007, 21:49
    #34712397
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование pipes
boles VladConnВот здесь неплохой пример на pipes:

http://binaryworld.net/Main/CodeDetail.aspx?CodeId=3665

Посмотрел, но мало чего понял... А особенно не нашел ответа на свой вопрос...

Может, кто-нибудь, кто хоть раз использовал пайпы, поможет мне поправить мой код? Мне это надо очень срочно, но о них я слышу впервые, поэтому сам вряд ли разберусь!
Заранее благодарю!

В этой ссылке как раз показано, как правильно использовать pipes для ваших целей. У вас именно client - server. Там сказано, что требуется 6 шагов для сервера и 3 - для клиента. И эти шаги расписаны. Вот вам и правка кода.

С уважением.
...
Рейтинг: 0 / 0
07.08.2007, 21:54
    #34712405
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование pipes
boles VladConn boles VladConnИ еще: а какая необходимость в использовании pipes? Разве FSO не удобнее?

Т.е. передать строку через текстовый файл? Если вы именно это имели в виду, то не вариант...

Но ведь вы сами используете WriteFile...

Я все-таки считаю, что это не текстовый файл... Хотя кто его этого лешия знает :)
Объясните мне тогда, эти пайпы что ничем практически не отличаются от текстовых файлов или это просто функции именуются одинаково?

:0)
Я Пастернака не читал, но против! Если серьезно, я pipes не знаю. Но знаю, что FSO - всего лишь wrapper вокруг API функций для работы с файлами. Вы там в коде у себя ведь строку же передаете, текстовую: buffer$ = String$(200, "aaaaaaaa")
...
Рейтинг: 0 / 0
08.08.2007, 12:11
    #34713371
Использование pipes
хотя в pipes и используется writefile - это все-таки совсем другое дело..
pipes - это механизм клиент-серверного общения.
файлы - это тормознее гораздо и нестабильнее.

между прочим, кроме так сейчас популярных портов (и обсуждаемых тут пайпов) существует еще много других клиент-серверных технологий: MailSlots, OLE/COM/DCOM, CGI, ASP, образы файлов отображаемые в памяти (работа идет с дескрипторами файлов в процессе, их отображает Винда.. кэш - это о том же.. тока этот метод доступен лишь при локальном обмене данными, т.к. память - она только локальная)
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Использование pipes / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]