Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 | 2 |

 

  Вопрос: Работа с сетью Добавлено: 01.06.11 14:49  

Автор вопроса:  Евгений
Здравствуйте!
Простите за глупые вопросы, но я только изучаю VB.NET.
Пока только писал простые программки по работе с текстовыми файлами, таблицами Excel и т.п.
Сейчас возникла потребность программы которая бы общалась по телнету с оборудованием.
Т.е. прога посылает текстовую команду по сети (телнет), в ответ оборудование присылает результат, который нужно проанализировать. Короче, что-то типа Hyper Terminal.
Если не ошибаюсь, для этих целей необходимо использовать WinSock или MS Common Control. Как мне в Visual Studio 2008 включить поддержку этих приблуд?
Если ли литература для начинающих по работе с сетью в VB.NET?

Ответить

  Ответы Всего ответов: 16  

Номер ответа: 1
Автор ответа:
 Евгений



Вопросов: 1
Ответов: 9
 Профиль | | #1 Добавлено: 01.06.11 14:51
И если не затруднит, киньте какой-нибудь простой код чтоб понять как все работает

Ответить

Номер ответа: 2
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #2 Добавлено: 01.06.11 22:52
Если все работает по TCP, можно использовать System.Net.Sockets.TcpClient

Ответить

Номер ответа: 3
Автор ответа:
 Евгений



Вопросов: 1
Ответов: 9
 Профиль | | #3 Добавлено: 02.06.11 08:42
Так отлично, спасибо.
Люди добрые, киньте пример рабочего простого кода для понятия принципа работы TCPClient.
Я только смог найти вот такой консольный код

Sub Main()

Dim session As New System.Net.Sockets.TcpClient

Dim networkstream As Net.Sockets.NetworkStream

Dim bytes(session.ReceiveBufferSize) As Byte

Dim ne_data As String

Dim send_command1("username".Length) As Byte

Dim send_command2("password".Length) As Byte

Dim send_command3("enable".Length) As Byte

Dim send_command4("config".Length) As Byte

Dim send_command5("test".Length) As Byte

Dim send_command6("pots loop-line-test telno 074984046".Length + 2) As Byte

Dim i As Integer

session.Connect("10.240.73.132", 23)

If session.Connected Then

Debug.Print("connected";)

If session.GetStream.CanRead Then

networkstream = session.GetStream

Debug.Print("Sending user name";)

send_command1 = System.Text.Encoding.ASCII.GetBytes("username" & vbCrLf) 'with vbCrLf successfuly can sand username and password

networkstream.Write(send_command1, 0, send_command1.Length)

networkstream.Read(bytes, 0, CInt(session.ReceiveBufferSize))

ne_data = System.Text.ASCIIEncoding.ASCII.GetString(bytes)

Debug.Print(";Device said:" & ne_data & vbCrLf)

Debug.Print("Sending password";)

send_command2 = System.Text.Encoding.ASCII.GetBytes("msan" & vbCrLf)

networkstream.Write(send_command2, 0, send_command2.Length)

Threading.Thread.Sleep(1000) ' wait to receive data

networkstream.Read(bytes, 0, CInt(session.ReceiveBufferSize))

ne_data = System.Text.ASCIIEncoding.ASCII.GetString(bytes)

Debug.Print(";Device said:" & ne_data & vbCrLf)

Debug.Print("Sending ENABLE";) 'cannot send command to the device

send_command3 = System.Text.Encoding.ASCII.GetBytes("enable" & vbLf) '??? here is the problem ???

networkstream.Write(send_command3, 0, send_command3.Length)

Threading.Thread.Sleep(1000) ' wait to receive data

ne_data = System.Text.ASCIIEncoding.ASCII.GetString(bytes)

Debug.Print(";Device said:" & ne_data & vbCrLf)

'some other code

networkstream.Close()

Else

Debug.Print("can't read";)

End If

Else

Debug.Print("connection failed";)

End If

session.Close()

If session.Connected Then

Debug.Print("still connected";)

Else

Debug.Print("disconnected";)

End If

End Sub

Но разобрать в нем не получается...

Ответить

Номер ответа: 4
Автор ответа:
 Евгений



Вопросов: 1
Ответов: 9
 Профиль | | #4 Добавлено: 02.06.11 08:43
что за хреновы смайлики вылезли...

Ответить

Номер ответа: 5
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #5 Добавлено: 02.06.11 11:33
Люди добрые, киньте пример рабочего простого кода для понятия принципа работы TCPClient.

http://msdn.microsoft.com/ru-ru/library/system.net.sockets.tcpclient(v=vs.90).aspx#Y500

Ответить

Номер ответа: 6
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #6 Добавлено: 02.06.11 13:51
Пример очень бредовый.
Если нужно текст отправлять, поверх NetworkStream кидается StreamWriter, и отадает необходимость создавать кучу буферов

Ответить

Номер ответа: 7
Автор ответа:
 Евгений



Вопросов: 1
Ответов: 9
 Профиль | | #7 Добавлено: 02.06.11 14:48
Artyom, про какой пример идет речь?
Про мой или этот http://msdn.microsoft.com/ru-ru/library/system.net.sockets.tcpclient(v=vs.90).aspx#Y500 ?

Ответить

Номер ответа: 8
Автор ответа:
 Евгений



Вопросов: 1
Ответов: 9
 Профиль | | #8 Добавлено: 02.06.11 15:12
Этот пример http://msdn.microsoft.com/ru-ru/library/1612451t(v=VS.90).aspx
не работает при явном копировании в окно кода консоли.
Мне нужно по TCP обмениваться лишь текстовой информацией с оборудованием.

Ответить

Номер ответа: 9
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #9 Добавлено: 02.06.11 15:31
Про твой. Откуда на MSDN может быть бредовый пример?

Ответить

Номер ответа: 10
Автор ответа:
 Евгений



Вопросов: 1
Ответов: 9
 Профиль | | #10 Добавлено: 02.06.11 19:30
Artyom, мне очень стыдно за свои тупые вопросы, можешь кинуть рабочий код для обмена текстом по TCP?
Приведенный выше пример из msdn не работает в явном виде, может что-то я не то делаю...
Т.е. для консольного варианта что должно содержаться в теле

Sub Main()
 ...
End Sub

Пожалуйста...

Ответить

Номер ответа: 11
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #11 Добавлено: 03.06.11 11:36
Приведенный выше пример из msdn не работает в явном виде

Разумеется не будет.. ты должен, как минимум, передать IP и порт реального сервера иди девайся которое будет принимать свои сообщения и отправлять тебе ответт

Ответить

Номер ответа: 12
Автор ответа:
 Евгений



Вопросов: 1
Ответов: 9
 Профиль | | #12 Добавлено: 03.06.11 14:49
Блин, как это сделать?
На пальцах бы объяснить...

Ответить

Номер ответа: 13
Автор ответа:
 Евгений



Вопросов: 1
Ответов: 9
 Профиль | | #13 Добавлено: 07.06.11 15:32
Вообщем, TCP client у меня заработал. Т.е. запускаю связку клиент-сервер на двух компах и они прекрасно обмениваются между собой сообщениями.
Вопрос, как теперь подружить все это дело с Телнет-Сервером? Т.е. нужно организовать диалог по телнет-протоколу.

Ответить

Номер ответа: 14
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #14 Добавлено: 08.06.11 11:58
Есть описание протокола?

Ответить

Номер ответа: 15
Автор ответа:
 Евгений



Вопросов: 1
Ответов: 9
 Профиль | | #15 Добавлено: 09.06.11 06:46
да это обычный Telnet протокол

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам