Люди давно хотел узнать! Скажите пожалуйста!
Возможно ли по локальной сети передать команду программе??? Зная айпи адрес компа!!! И как это будет выглядеть!!! Например на изменение в программе какой нибудь переменной???
Вот как работать с Winsock (текст из учебника Padre)
Контрол Winsock:
Этот контрол нужен для связи двух компов, его очень часто используют для локалок ил для создания троянов(об этом потом ). В этом шаге мы сделаем простую программу типо Клиент - Сервер.
Клиент - это программа которая посылает сигналы серверу, а сервер ждет сигналов клиента(ну ты меня понял?). Начнемс...
Для начала сделаем Сервер, он будет ждать сигнала клиента, и когда клиент выйдет на связь, можно будет посылать сигналы от сервера к клиенту, и наоборот. Короче будет что то типо чата.
Войди в VB(Standart Exe), подключи компонент МелкоСофт Winsock Контрол 6.0, на понели инструментов появится объект Winsock, закинь его на форму. На форму кинь еще 2 текстовых поля(1ое - отправка сообщений, 2ое - прием сообщений). Вот код:
Private Sub Form_Load()
Winsock1.LocalPort = 101 ' Указываем порт который будет слушать Сервер
Winsock1.Listen ' Начинаем Слушать порт
Form1.Caption = "Сервер"
End Sub
Private Sub Text1_Change() ' При изменении текста в текстовом поле:
Winsock1.SendData Text1.Text ' Посылаем клиенту текст который введен в текстовое поле
End Sub
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
If Winsock1.State <> sckClosed Then Winsock1.Close ' Если сервер не закрыт, то закрываем его(подробнее смотри ниже)
Winsock1.Accept requestID ' Принимаем запрос
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long) ' Если Клиент посылает текст то:
Dim D As String ' Объявляем переменную для работы со строками
Winsock1.GetData D ' Записываем в переменную текст, который был послан Клиентом
Text2.Text = D ' Здесь все понятно, скажу только что нельзя напрямую писать Winsock1.GetData Text1.Text, надо обязательно через переменную
End Sub
Ну усе, сервер готов, теперь надо сделать Клиент. Ой... чуть не забыл... короче вот таблица:
Константа Описание
sckClosed Такое значение стоит при запуске программы или когда порт закрыт
sckOpen Порт открыт
sckListening Порт прослушивается
sckConnectionPending Ожидание связи
sckConnecting Подключение к хосту
sckConnected Связь установлена
sckClosing Связь закрывается...
sckError Ошибка
Вот про это я и говорил, в строке If Winsock1.State <> sckClosed Then, вместо sckClosed ты можешь вписать любую константу из таблицы.
Теперь мы сделаем клиент, на форму опять кинь контрол Winsock, 2 тектовых поля, вот код:
Private Sub Form_Load()
Winsock1.RemoteHost = "127.0.0.1" ' Указываем IP компа, на котором запущен сервер(В место IP`a можно указать имя компа(Мой Компьютер>>Панель управления>>Сеть>>Индефикация(Winsock1.RemoteHost = "Komp"))(если ты сейчас не в сети(ил в локалке), то твой IP всегда будет 127.0.0.1)
Winsock1.RemotePort = 101 ' Указываем порт сервера
Winsock1.Connect ' Подключаемся
Form1.Caption = "Клиент"
End Sub
Private Sub Text1_Change() ' При изменении текста:
Winsock1.SendData Text1.Text ' Отправляем текст
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long) ' Если сервер посылает текст то:
Dim DD As String ' Объявляем переменную для работы со строками
Winsock1.GetData DD ' Записываем в переменную текст, который был послан Сервером
Text2.Text = DD
End Sub
Этот контрол нужен для связи двух компов. Его очень часто используют для локалок. Сделаем простую программу типо Клиент - Сервер.
Клиент - это программа которая посылает сигналы серверу, а сервер ждет сигналов клиента.
Для начала сделаем Сервер, он будет ждать сигнала клиента, и когда клиент выйдет на связь, можно будет посылать сигналы от сервера к клиенту, и наоборот. Короче будет что то типо чата.
Войди в VB(Standart Exe), подключи компонент Microsoft Winsock Контрол 6.0, на понели инструментов появится объект Winsock, закинь его на форму. На форму кинь еще 2 текстовых поля(1ое - отправка сообщений, 2ое - прием сообщений). Вот код:
Private Sub Form_Load()
Winsock1.LocalPort = 101 ' Указываем порт который будет слушать Сервер
Winsock1.Listen ' Начинаем Слушать порт
Form1.Caption = "Сервер"
End Sub
Private Sub Text1_Change() ' При изменении текста в текстовом поле:
Winsock1.SendData Text1.Text ' Посылаем клиенту текст который введен в текстовое поле
End Sub
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
If Winsock1.State <> sckClosed Then Winsock1.Close ' Если сервер не закрыт, то закрываем его(подробнее смотри ниже)
Winsock1.Accept requestID ' Принимаем запрос
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long) ' Если Клиент посылает текст то:
Dim D As String ' Объявляем переменную для работы со строками
Winsock1.GetData D ' Записываем в переменную текст, который был послан Клиентом
Text2.Text = D ' Здесь все понятно, скажу только что нельзя напрямую писать Winsock1.GetData Text1.Text, надо обязательно через переменную
End Sub
Ну усе, сервер готов, теперь надо сделать Клиент. Ой... чуть не забыл... короче вот таблица:
Константа Описание
sckClosed - Такое значение стоит при запуске программы или когда порт закрыт
sckOpen - Порт открыт
sckListening - Порт прослушивается
sckConnectionPending - Ожидание связи
sckConnecting - Подключение к хосту
sckConnected - Связь установлена
sckClosing - Связь закрывается...
sckError - Ошибка
Вот про это я и говорил, в строке If Winsock1.State <> sckClosed Then, вместо sckClosed ты можешь вписать любую константу из таблицы.
Теперь сделаем клиент, на форму опять кинь контрол Winsock, 2 тектовых поля, вот код:
Private Sub Form_Load()
Winsock1.RemoteHost = "127.0.0.1" ' Указываем IP компа, на котором запущен сервер(В место IP`a можно указать имя компа(Мой Компьютер>>Панель управления>>Сеть>>Индефикация(Winsock1.RemoteHost = "Komp"))(если ты сейчас не в сети(ил в локалке), то твой IP всегда будет 127.0.0.1)
Winsock1.RemotePort = 101 ' Указываем порт сервера
Winsock1.Connect ' Подключаемся
Form1.Caption = "Клиент"
End Sub
Private Sub Text1_Change() ' При изменении текста:
Winsock1.SendData Text1.Text ' Отправляем текст
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long) ' Если сервер посылает текст то:
Dim DD As String ' Объявляем переменную для работы со строками
Winsock1.GetData DD ' Записываем в переменную текст, который был послан Сервером
Text2.Text = DD
End Sub
Все, теперь запусти Сервер, а потом Клиент. Впиши в Текстовое поле текст, и он появится в другом текстовом поле(если текст вписан в сервер, то он появится в клиенте, и наоборот).
Удачи!
Сп!!! Мне кажеться и этотого прикола хватит!!! Я чёто и не подумал что есть компонент специальный! Осталось только его свойства узнать и в путь!!! Спасибо огромное!!!
Пиши конечно! graymord@mail.ru. Только вот одна проблема! Всё работает на одной машине т.е. 127.0.0.1... а в сети вылетает нафиг, может у меня сеть так настроена??? пробовал и айпи машины вводить и имя, всё равно не работает!