Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Промогите с прогой на Basic'е


Рекомендуемые сообщения

Значит так, излагаю: имеется идея, имеется вполне приличное знание Visual Basic, но идея напрямую связана с сетевым программированием.

То бишь пара главных вопросов:

1) Как в бэйсикПе организовать пересылку данных в сетке

2)Как на нем написать и разделить программу-сервер и программу-клиент

3)И, вобщем, буду благодарен за любые ссылки на темы типа "Visual Basic и сеть"

Советы типа: переучайся на PHP, Perl (Си, Делфи), потому как Basic - отстой не катят.

Ссылка на комментарий
Поделиться на другие сайты

Значит так:

Включаем в бейсике дополнительный компонент под названием Microsoft Winsock Control. Соответственно кидаем его на форму (куда угодно, т.к. он невидимый).

Далее идет разница в клиенте и сервере.

Сервер.

Загрузка формы (считаем, что компонент winsock имеет имя tcpServer

Private Sub Form_Load()  'Задать номер порта по которому будет осуществляться  'обмен данными, присвоив значение свойству LocalPort  'Вызвать метод Listen.  ' Listen.  tcpServer.LocalPort = 1001  tcpServer.ListenEnd Sub

т.к. это у нас сервер, то мы ждем входящих подключений командой listen (см. выше).

Значит так, при загрузке включили и слушаем.

И вот что делаем на запрос подключения:

Private Sub tcpServer_ConnectionRequest(ByVal requestID As Long)  ' Проверяется свойство State, было ли завершено  ' предыдущее соединение. Если не завершено,  ' то перед установлением нового соединения,  ' старое закрывается принудительно.  If tcpServer.State <> sckClosed Then tcpServer.Close  ' Принятие запроса Accept с параметром requestID  ' на установление соедиения.  tcpServer.Accept requestIDEnd Sub

Ну вот, приконнектились.

Теперь смотрим что делать, если данные припёрлись.

Для начала содадим текстовое поле, в котором будут вылазить данные (писать в этом поле не надо), и назовём его txtOutput.

Private Sub tcpServer_DataArrival _  (ByVal bytesTotal As Long)  ' Декларируется переменная-буфер для получаемых данных.  ' Вызывается метод GetData и свойству Text  ' текстового поля txtOutput, присваивается значение переменной буфера.Dim strData As StringtcpServer.GetData strDatatxtOutput.Text = txtOutput.Text + "Пришло <<< " + strData + Chr(13) + Chr(10)  Open "server.log" For Append As #1  Print #1, Str(Time) + "  " + "Пришло <<< " + strData  Close #1End Sub

Если заметили, то заодно мы пишем лог-файл

Ладно, теперь думаем о том, что и отправлять что-то надо.

Склепаем ещё одно текстовое поле под названием txtSendData. Создадим кнопку на отсылание сообщения из этого поля и напишем в её нажатие

tcpServer.SendData txtSendData.Text       txtOutput.Text = txtOutput.Text + "Ушло   >>> " + txtSendData.Text + Chr(13) + Chr(10)          Open "server.log" For Append As #1          Print #1, Str(Time) + "  " + "Ушло   >>> " + txtSendData.Text          Close #1       txtSendData.Text = ""

Ну, а при закрытии окна незабудем написать

Private Sub Form_Unload(Cancel As Integer)   tcpServer.CloseEnd Sub

Так же можно эту строчку запихнуть и в какую-нить кнопку, чтобы принудительно отключить человека.

Ну вот вроде и усё по серверу. По клиенту нечто подобное. Спустя некоторое время опишу.

Продолжение следует ...

Изменено пользователем SHARKenstein
Ссылка на комментарий
Поделиться на другие сайты

Клиент

Ну вот и описание клиента:

Создадим сразу 3 текстовых окна для: имени компа, к котому будем подключатся; для набивания мессаги, и для самого диалога. Обзовём их txtPort, txtSend, txtDialog соответственно.

Да, не забываем так же добавить и компонент winsock, который обзовём tcpClient

Начнём с загрузки формы.

Тьфу, а нинадо ничего делать, т.к. это у нас не сервер, надо данные подключения ввести сначала. Стало быть, перед нажатием кнопки, которая соединит во едино компы, надо ввести в txtPort имя или IP адрес удалённого компа.

Ну вот, пишем то, что будет происходить после нажатия кнопки соединения:

If tcpClient.State <> sckClosed Then tcpClient.closeIf txtPort.Text = "" Then Exit SubtcpClient.RemoteHost = txtPort.TexttcpClient.RemotePort = 1001tcpClient.Connect

И тут у нас вдруг попёрли данные от сервака... Дык мы их обработаем и в окошко нужное поместим:

Private Sub tcpClient_DataArrival(ByVal bytesTotal As Long)Dim strData As StringtcpClient.GetData strDatatxtDialog.Text = txtDialog.Text + "Пришло <<< " + strData + Chr(13) + Chr(10)   Open "cilent.log" For Append As #1   Print #1, Str(Time) + "  " + "Пришло <<< " + strData   Close #1End Sub

Вроде как всё ОК.

Совсем забыл, нам же ещё и отправить что-то надо.

Хорошо, забубениваем кнопку для отправки и пишем в еёный клик:

tcpClient.SendData txtSend.Text       txtDialog.Text = txtDialog.Text + "Ушло   >>> " + txtSend.Text + Chr(13) + Chr(10)           Open "cilent.log" For Append As #1           Print #1, Str(Time) + "  " + "Ушло   >>> " + txtSend.Text           Close #1       txtSend.Text = ""

Ну вот и усё.

Как всегда не забываем отключатся от сервака:

    tcpClient.Close

Это при закрытии формы или по кнопке (а лучше и там и там - для лучшего юзабилити).

Ну вот. Усё теперяче.

На этих знаниях вполне можно забубенить прогу для обмена данными по сети типа "клиент"-"сервер".

ЗЫ. А что за идея была изначально?

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

Ну лады, удачи тебе освоить Visual. Если будут ошибки - обращайся - чем смогу...

ЗЗЫ. Расскажи об успехах, т.к. не хочется думать, что я эту фигню зря печатал.

Ссылка на комментарий
Поделиться на другие сайты

Фу ты, забыл я про сайты.

Заходи на vbstreets.ru. Там есть практически всё по VisualBasic и не только. Может и ещё какие ссылки там найдёш.

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...