Модераторы: diadiavova, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Клиент сервер передача Картинки, Клиент сервер передача Картинки  
:(
    Опции темы
onixred
Дата 9.4.2011, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 19.6.2009

Репутация: нет
Всего: нет



Вот есть сервер консольный я хочу сделать скрин шот и отправить его клиенту. скриншет я знаю как получить и сохранить в jpg а как передать не могу понять=(
вот строчки для ответа 
  Dim sendBytes As [Byte]() = Encoding.Unicode.GetBytes(serverResponse)
networkStream.Write(sendBytes, 0, sendBytes.Length)
networkStream.Flush()

я так понимаю нужно картинку представить (перевести в Byte )
или как?


Код

Module Module1
    Sub Main()
        Dim serverSocket As New TcpListener(8888)
        Dim requestCount As Integer
        Dim clientSocket As TcpClient
        serverSocket.Start()
        msg("Сервер запущен!")
        clientSocket = serverSocket.AcceptTcpClient()
        msg("Произведенно подключение с клиентом")
        requestCount = 0

        While (True)
            Try
                requestCount = requestCount + 1
                Dim networkStream As NetworkStream = _
                clientSocket.GetStream()
                Dim bytesFrom(10024) As Byte
                networkStream.Read(bytesFrom, 0, CInt(clientSocket.ReceiveBufferSize))
                Dim dataFromClient As String = _
                System.Text.Encoding.Unicode.GetString(bytesFrom)
                dataFromClient = _
                dataFromClient.Substring(0, dataFromClient.IndexOf("$"))
                msg("Данные клиента - " + dataFromClient)
                Dim serverResponse As String = _
                "Ответ" + Convert.ToString(requestCount)
                Dim sendBytes As [Byte]() = _
                Encoding.Unicode.GetBytes(serverResponse)
                networkStream.Write(sendBytes, 0, sendBytes.Length)
                networkStream.Flush()
                msg(serverResponse)
            Catch ex As Exception
                MsgBox(ex.ToString)
            End Try
        End While


        clientSocket.Close()
        serverSocket.Stop()
        msg("exit")
        Console.ReadLine()
    End Sub

    Sub msg(ByVal mesg As String)
        mesg.Trim()
        Console.WriteLine(" >> " + mesg)
    End Sub
End Module[quote]

[/quote]

PM MAIL   Вверх
krewin
Дата 9.4.2011, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 27.8.2009

Репутация: 1
Всего: 1



Странно, почему бы тебе не воспользоваться, старым проверенным методом 

Код

  Dim img() As Byte = IO.File.ReadAllBytes("c:\ваше изображение.jpg") 'загруженное изображение из файла для отправки


вот  System.Text.Encoding.Unicode.... неприменимо это для текста


PM MAIL   Вверх
onixred
Дата 10.4.2011, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 19.6.2009

Репутация: нет
Всего: нет



ак как теперь его сохранить на клиенте?
PM MAIL   Вверх
krewin
Дата 10.4.2011, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 27.8.2009

Репутация: 1
Всего: 1



networkStream.Write(sendBytes, 0, sendBytes.Length) - производить запись в поток
 networkStream.Read(bytesFrom, 0, CInt(clientSocket.ReceiveBufferSize)) - читает из потока


Код

 IO.File.WriteAllBytes("c:\изображение.jpg", bytesFrom)


Да примерно так . 

Обрати внимание на свой код  Dim bytesFrom(10024) As Byte изображение свыше 10024 Byte может вызвать 'Индекс находился вне границ массива.' ! 


PM MAIL   Вверх
onixred
Дата 11.4.2011, 04:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 19.6.2009

Репутация: нет
Всего: нет



все бы хорошо  ток почему то Error    5    'WriteAllBytes' is not a member of 'System.IO.File'.     
PM MAIL   Вверх
krewin
Дата 11.4.2011, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 27.8.2009

Репутация: 1
Всего: 1



пожалуста огласите код
PM MAIL   Вверх
onixred
Дата 12.4.2011, 05:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 19.6.2009

Репутация: нет
Всего: нет



Код

 Dim serverStream As NetworkStream = clientSocket.GetStream()
                    Dim outStream As Byte() = System.Text.Encoding.Unicode.GetBytes( CStr(k1) + "?" + CStr(k2) + "$")
                   serverStream.Write(outStream, 0, outStream.Length)
                    serverStream.Flush()
                    Dim inStream(10024) As Byte
                    serverStream.Read(inStream, 0, inStream.Length)
                    System.IO.File.WriteAllBytes("изображение.jpg", inStream)
                             

я пишу клиент для смарт девайса  там функции обрезаны не все есть или я их не могу подключить 
вроди есть а почему то пишет как будто их нет  что за чудеса 
PM MAIL   Вверх
krewin
Дата 12.4.2011, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 27.8.2009

Репутация: 1
Всего: 1



С этого надо было начинать для смартов там другой прикол. WriteAllBytes нет его под силверлайтом winPhone.

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

Microsoft.VisualBasic.FileIO.FileSystem.WriteAllBytes
 или
 FileOpen (может требовать VB6)
или 
My.Computer.FileSystem.WriteAllBytes



В первую очередь попробуй так

Код

 Dim tt As System.IO.FileStream = System.IO.File.Open("c:\test.jpg", IO.FileMode.Append)
        tt.Write(inStream, 0, inStream.Length)
        tt.Close()


Вместо WriteAllBytes мне кажется что Open работает в девайсах



Это сообщение отредактировал(а) krewin - 12.4.2011, 20:26
PM MAIL   Вверх
onixred
Дата 14.4.2011, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 19.6.2009

Репутация: нет
Всего: нет



что то получаеться но передает не весть рисунок а тока кусок 
PM MAIL   Вверх
onixred
Дата 17.4.2011, 09:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 19.6.2009

Репутация: нет
Всего: нет



клиент 
Код

 Dim inStream(50855) As Byte
                    serverStream.Read(inStream, 0, inStream.Length)
                    Dim tt As System.IO.FileStream = System.IO.File.Open("\My Documents\oo1.txt", IO.FileMode.Create)

                    tt.Write(inStream, 0, inStream.Length)
                    tt.Close()


сервер 
Код

 Dim screenshot As System.Drawing.Bitmap
                        Dim graph As System.Drawing.Graphics
                        bounds = My.Computer.Screen.Bounds
                        bounds.Width = 200
                        bounds.Height = 266
                        screenshot = New Bitmap(bounds.Width, bounds.Height, Imaging.PixelFormat.Format24bppRgb)
                        graph = Graphics.FromImage(screenshot)
                        graph.CopyFromScreen(Cursor.Position.X, Cursor.Position.Y, 0, 0, bounds.Size, CopyPixelOperation.SourceCopy)
                        screenshot.Save("C:\screenshot.jpeg", System.Drawing.Imaging.ImageFormat.Jpeg) ' это сохраняет изображение
                        Dim img() As Byte = IO.File.ReadAllBytes("C:\screenshot.Jpeg") 'загруженное изображение из файла для отправки
                        networkStream.Write(img, 0, img.Length)
                        networkStream.Flush()



результат 


Присоединённый файл ( Кол-во скачиваний: 6 )
Присоединённый файл  oo1.jpeg 49,66 Kb
PM MAIL   Вверх
onixred
Дата 17.4.2011, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 19.6.2009

Репутация: нет
Всего: нет



А должно быть ! что же делать?

Присоединённый файл ( Кол-во скачиваний: 6 )
Присоединённый файл  screenshot.jpeg 6,84 Kb
PM MAIL   Вверх
krewin
Дата 17.4.2011, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 27.8.2009

Репутация: 1
Всего: 1



Ну, ну у тебя с передачей нет проблем. Проверь файл    screenshot.Save("C:\screenshot.jpeg", System.Drawing.Imaging.ImageFormat.Jpeg) он же screenshot.jpeg. Который сохраняешь он будет тоже кусок. Ты же установил размеры тут

Код

bounds.Width = 200
 bounds.Height = 266


вот тебе и 200х266
PM MAIL   Вверх
onixred
Дата 18.4.2011, 04:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 19.6.2009

Репутация: нет
Всего: нет



Да он кусок  но там кусок  вот такой 
http://i003.radikal.ru/1104/8e/53231872d8d2.jpg
а у меня получается  когбуто количество байт не хватает или пакет  тока один передался
http://s011.radikal.ru/i317/1104/d9/db80bcd9a9cf.jpg


Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  screenshot.png 100,27 Kb
PM MAIL   Вверх
krewin
Дата 18.4.2011, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 27.8.2009

Репутация: 1
Всего: 1



Для того чтобы понять причину, ты должен знать поставленную задачу 
 Надо передать изображение полный скиншет всего экрана компа (если ты это хочешь сделать) тебе понадобиться отправить, примерно 309кб при раз-решение 1440х900. Отправка такого изображения, очень просто передается. Вопрос в другом мобильное устройство сможет его прочитать ?  В этом деле надо маштабировать изображение. Потом передавать его. Если возникают ошибки при отправки опиши подробно ошибку и исходный код. 
PM MAIL   Вверх
onixred
Дата 19.4.2011, 07:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 19.6.2009

Репутация: нет
Всего: нет



разобрался где ошибка но как ее исправить еще не понял как 

если делать на клиенте так то все хорошо 

For i As Integer = 0 To 380000
Text = serverStream.ReadByte
tt.WriteByte(Text)
Next i
tt.Close()

вопрос тока как заменить число  380000 и это все долго пока он это все считает 
В VB.net разве нет условия читать пока не конец? 
а если использовать

                    tt.Write(inStream, 0, inStream.Length) 
то что то он кодировку меняет или кодирует как то 

                   
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума VB .NET
diadiavova
  • Прежде чем задать вопрос, воспользуйтесь поиском: возможно Ваш вопрос уже обсуждался и на него был получен ответ.
  • Если такой же вопрос не найден, не стоит задавать свой вопрос в любую тему, создайте новую.
  • Заголовок темы должен отображать ее суть.
  • Содержание поста должно описывать проблему понятно, но в то же время, по возможности, лаконично. Сначала следует описать суть вопроса, потом можно привести пример кода, не вынуждайте других участников угадывать в чем Ваша проблема - телепатов здесь нет.
  • Будьте взаимно вежливы и дружелюбны.
  • При оформлении сообщений используйте форматирование, примеры кода заключайте в теги [CODE=vbnet][/CODE].
  • Также ознакомьтесь с общими правилами, действующими на всем форуме.
  • Если вопрос решен, не забывайте помечать тему решенной(вверху темы есть ссылка). Кроме того, если Вы хотите отблагодарить участников, оказавших помощь в решении, можно повысить им репутацию, в случае, если у Вас менее 100 сообщений в форуме и функция изменения репутации Вам недоступна, можете написать сюда.
  • Общие вопросы по программированию на платформе .NET обсуждаются здесь.
  • Литература по VB .NET обсуждается здесь.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0527 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.