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

Промогите с прогой на 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 и не только. Может и ещё какие ссылки там найдёш.

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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

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

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