Skiv-mag Опубликовано 8 сентября, 2003 Жалоба Поделиться Опубликовано 8 сентября, 2003 Значит так, излагаю: имеется идея, имеется вполне приличное знание Visual Basic, но идея напрямую связана с сетевым программированием. То бишь пара главных вопросов: 1) Как в бэйсикПе организовать пересылку данных в сетке 2)Как на нем написать и разделить программу-сервер и программу-клиент 3)И, вобщем, буду благодарен за любые ссылки на темы типа "Visual Basic и сеть" Советы типа: переучайся на PHP, Perl (Си, Делфи), потому как Basic - отстой не катят. Ссылка на комментарий Поделиться на другие сайты Поделиться
SHARKenstein Опубликовано 8 сентября, 2003 Жалоба Поделиться Опубликовано 8 сентября, 2003 (изменено) Значит так: Включаем в бейсике дополнительный компонент под названием 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 Так же можно эту строчку запихнуть и в какую-нить кнопку, чтобы принудительно отключить человека. Ну вот вроде и усё по серверу. По клиенту нечто подобное. Спустя некоторое время опишу. Продолжение следует ... Изменено 8 сентября, 2003 пользователем SHARKenstein Ссылка на комментарий Поделиться на другие сайты Поделиться
SHARKenstein Опубликовано 8 сентября, 2003 Жалоба Поделиться Опубликовано 8 сентября, 2003 Клиент Ну вот и описание клиента: Создадим сразу 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. Если будут ошибки - обращайся - чем смогу... ЗЗЫ. Расскажи об успехах, т.к. не хочется думать, что я эту фигню зря печатал. Ссылка на комментарий Поделиться на другие сайты Поделиться
SHARKenstein Опубликовано 8 сентября, 2003 Жалоба Поделиться Опубликовано 8 сентября, 2003 Фу ты, забыл я про сайты. Заходи на vbstreets.ru. Там есть практически всё по VisualBasic и не только. Может и ещё какие ссылки там найдёш. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти