Я много борюсь с этим кодом, который пытаюсь заставить работать. Я успешно установил соединение с объектом TcpClient на две отдельные удаленные машины и передал на них данные. По сути, я пытаюсь подключиться к компьютеру 1 через порт 80 и отправить запрос GET. После отправки запроса я хочу сохранить соединение, чтобы программное обеспечение на другой стороне могло отправлять мне данные, когда оно будет готово. Как сохранить соединение открытым и читать данные каждый раз, когда оно становится доступным в потоке? Я пытался и пытался использовать NetworkStream.Read и BeginRead безрезультатно. Самое близкое, что я пришел, - это спал мой поток каждые 30 секунд, а затем выполнял еще один запрос GET, который не нужен. Вот текущий код, который я имею для чтения из потока. Я знаю, что где-то здесь нужна петля:
Примечание: RemoteSocket - это мой объект TcpClient, который связан этой точкой
Dim serverStream As NetworkStream = RemoteSocket.GetStream()
rqst = "GET /Control/Clip_Forwarding_Stream?CameraName=" & URL_Encode(Name) & " HTTP/1.0" & vbCrLf & vbCrLf
Dim stream As Byte() = Encoding.GetEncoding("Windows-1252").GetBytes(rqst)
serverStream.Write(stream, 0, stream.Length)
Dim inStream(1024) As Byte
Dim recv = serverStream.Read(inStream, 0, inStream.Length)
Dim data = Encoding.GetEncoding("Windows-1252").GetString(inStream, 0, recv)
Что я делаю с данными, так это передаю их этому методу:
Примечание: ForwardSocket - это мой другой объект TcpClient, который связан этой точкой
Dim serverStream As NetworkStream = ForwardSocket.GetStream()
Dim stream As Byte() = Encoding.GetEncoding("Windows-1252").GetBytes(data)
serverStream.Write(stream, 0, stream.Length)
Любые примеры могут быть на C # или VB, так как мне больше всего нравится C #, просто нужно написать все это на VB.