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 и не только. Может и ещё какие ссылки там найдёш. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.