Страница: 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("
evice 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("
evice 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("
evice 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
       
    
       
  
 
    
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
       
    
       
  
 
    
Разумеется не будет.. ты должен, как минимум, передать 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 протокол