Member 8325258 Ответов: 2

Получать системная ошибка".исключение InvalidOperationException' произошел в client.exe"


Привет,

Я очень новичок в visual basic и пытаюсь создать приложение для управления прибором с помощью связи TCP/IP. Все кодирование выполняется с большой помощью онлайн-ресурсов, но теперь я застрял на заключительном этапе из-за ошибки "необработанное исключение типа" системы.InvalidOperationException ' произошло в Client.exe

Дополнительная информация: произошла ошибка при создании формы. Увидеть Исключение.InnerException для получения более подробной информации. Ошибка заключается в следующем: значение не может быть нулевым.

Имя параметра: input"

Может ли кто-нибудь помочь мне решить эту проблему? Ниже приведен мой код:

Система Импорта.Нет.Розетки
Система Импорта.ИО

Форма Публичного Класса 1
"Частный Клиент Как TCPControl
Private Msg As String

Публичный Клиент Как Новый TcpClient


Dim readData как новый BinaryReader(поток)
Dim writeData как новый BinaryWriter(поток)
Dim Stream As NetworkStream = Клиент.Метод getstream()


Private Sub cmdConnect_Click (sender As Object, e As EventArgs) обрабатывает cmdConnect.Щелчок
'Клиент = Новый TCPControl ("169.254.22.165", 3602)
Клиент.Подключение ("169.254.164.61", 3602)
Если Клиент.Клиент.Подключается затем cmdConnect.Text = " Подключено"
'Дим поток как объекте networkstream = клиент.метод getstream()
Конец Подводной Лодки

Private Sub cmdSend_Click (sender As Object, e As EventArgs) обрабатывает cmdSend.Щелчок
'SendMessage()

записанные данные.Напишите("MSTART")
- txtMessage.Четкий()
- txtReceive.Четкий()
txtMessage.Сосредоточить()
Конец Подводной Лодки

- Частное Субсылочное Сообщение()
- Если Клиент.Клиент.Connected = True, То Клиент.Отправить (txtMessage.Текст)
- Конец Субмарины

Private Sub Form1_FormClosing (sender As Object, e As FormClosingEventArgs) обрабатывает Me. FormClosing
Если Клиент.Клиент.Connected = True Тогда
' Клиент.Поток данных.Закрывать()
Клиент.Клиент.Закрывать()
Конец, Если
Конец Подводной Лодки

Private Sub cmdReceive_Click (sender As Object, e As EventArgs) обрабатывает cmdReceive.Щелчок
Дим Строка Как Строка
'tcpClient_DataArrival(сообщение)
- txtReceive.метод appendtext()
- txtMessage.Четкий()
Строка = readData.Readstring далее()
txtReceive.Текст = Строка



Конец Подводной Лодки

'Частная Суб ReceiveMessage()
'Тусклое сообщение в виде строки
- Если Клиент.Клиент.Connected = True, То Клиент.Receive (txtMessage.Текст)
- Клиент.Полученное сообщение)
- Конец Субмарины

'Private Sub tcpClient_DataArrival(ByVal bytesTotal As Long)
'Тусклое сообщение в виде строки
- Позвони Клиенту.Receive (message) ' получение данных с сервера
- txtReceive.Text = txtReceive.Текст & сообщение & vbCrLf & vbCrLf
- txtReceive.Объект selectionstart = лен(txtReceive.Текст)
- Конец Субмарины
Конец Класса

Что я уже пробовал:

Я пробовал различные примеры подключения клиент-сервер TCP/IP, но ни один из них не работает в соответствии с моим приложением.

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

Dave Kreskowiak

Не зная строки кода, исключение создается тем, что невозможно сказать вам, что не так.

Member 8325258

Я получаю исключение в этой строке.
Dim readData как новый BinaryReader(поток)
Не могли бы вы помочь мне, как это можно сделать вручную?

2 Ответов

Рейтинг:
1

anoopg231

Во-первых, добавьте Try and Catch в свой код, и ошибка будет выглядеть как ошибка Object ref. В какой-то момент клиентский объект становится нулевым.

Будет легче, если вы сможете объяснить, в какой момент Вы получаете ошибку.


Member 8325258

Я получаю исключение в этой строке:-
Dim readData как новый BinaryReader(поток)
Где я должен использовать try и catch в своем коде для обработки этого исключения?

Рейтинг:
1

Dave Kreskowiak

Посмотрите на этот блок кода:

Dim readData As New BinaryReader(Stream)
Dim writeData As New BinaryWriter(Stream)
Dim Stream As NetworkStream = Client.GetStream()


Вы используете переменную под названием "Stream" (кстати, плохое имя!) для создания экземпляра BinaryReader и BinaryWriter. Проблема в том, что вы должны сначала определить эту переменную, прежде чем пытаться использовать ее при создании BinaryReader/Writer:
Dim Stream As NetworkStream = Client.GetStream()
Dim readData As New BinaryReader(Stream)
Dim writeData As New BinaryWriter(Stream)