Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/29: Рейтинг темы: голосов - 29, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 25.08.2012
Сообщений: 80
1

Передать массив byte по TCP

18.10.2012, 19:22. Показов 5975. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Имеется массив "byte[] b = ms.ToArray();" в котором содержится файл. Как передать этот массив по TCP?
Пробовал так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
MemoryStream ms = new MemoryStream();
            IMG.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
            byte[] b = ms.ToArray();
 
            MemoryStream stream = new MemoryStream(b);
 
            TcpClient TCP_client = new TcpClient("127.0.0.1", 3131);
            NetworkStream TCP_network_stream = TCP_client.GetStream();
            BinaryFormatter TCP_binary_formatter = new BinaryFormatter();
            byte[] buf = new byte[1024];
            int count;
            long k;
            BinaryReader TCP_binary_reader = new BinaryReader(stream);
            k = stream.Length; //Размер файла. 
            TCP_binary_formatter.Serialize(TCP_network_stream, k.ToString());
            while ((count = TCP_binary_reader.Read(buf, 0, 1024)) > 0)
            {
                TCP_binary_formatter.Serialize(TCP_network_stream, buf); 
            }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.10.2012, 19:22
Ответы с готовыми решениями:

Добавление элементов из массива byte[] в массив byte[]
Подскажите, пожалуйста, как можно добавить элементы из массива byteb в массив byte a, что бы...

Нельзя преобразовать тип function(a: byte;b: byte): byte к integer (Списки)
Создать список из целых чисел.Поменять в списке местами максимальный и минимальный элементы...

Как передать hex to byte
Здравствуйте, есть udp элемент и он передает на определенный IP hex код вот так: LRequest :=...

Как из потока передать в переменную типа Byte?
Вопрос такой: как можно из потока TStream данные занести в двумерный массив типа Array of Byte по...

4
Футболист
532 / 434 / 142
Регистрация: 31.10.2011
Сообщений: 1,010
18.10.2012, 19:48 2
C#
1
2
3
4
5
6
7
8
9
10
11
ASCIIEncoding asen = new ASCIIEncoding();
public void SendData(String SString)
        {
                        TcpClient tcpclnt = new TcpClient();
                        tcpclnt.Connect("goal.zapto.org", 1000);//1000-порт, если используеш роутер, то порт лучше открыть) на роутере
                        Stream stm = tcpclnt.GetStream();//get stream
                        byte[] ba = asen.GetBytes(SString);//string to byte
                        stm.Write(ba, 0, ba.Length);//send
 
                        tcpclnt.Close();//close
                    }
0
1 / 1 / 0
Регистрация: 25.08.2012
Сообщений: 80
18.10.2012, 19:58  [ТС] 3
А как его получить на сервере в виде массива byte?
0
Футболист
532 / 434 / 142
Регистрация: 31.10.2011
Сообщений: 1,010
18.10.2012, 20:08 4
организовать поток и начинать слушать.
Вот простой пример
C#
1
2
3
4
5
6
7
8
9
10
                   String bufStr = "";
                    IPAddress ipAd = IPAddress.Any;
                    TcpListener myList = new TcpListener(ipAd, 1000);// слушаем любой ип, 1000 порт
                    myList.Start();// начнем прослушивать
 
                    Socket s = myList.AcceptSocket();//принимаем
                    byte[] b = new byte[10000];
                    int k = s.Receive(b);//получили размер массива
                    for (int j = 0; j < k; j++)//получили строчку
                        bufStr += Convert.ToChar(b[j]);
Повторюсь, если интернет подключение через роутер, открой порт иначе не будет передачи данных
1
1 / 1 / 0
Регистрация: 25.08.2012
Сообщений: 80
18.10.2012, 20:23  [ТС] 5
Теперь ошибка при попытке загрузить массив byte в MemoryStream: входная строка имела не верный формат.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
String bufStr = "";
            IPAddress ipAd = IPAddress.Any;
            System.Net.IPAddress ipAddress = System.Net.IPAddress.Parse("127.0.0.1");
            TcpListener myList = new TcpListener(ipAddress, 5858);// слушаем любой ип, 1000 порт
            myList.Start();// начнем прослушивать
 
            Socket s = myList.AcceptSocket();//принимаем
            byte[] b = new byte[10000];//получили массив битов
            int k = s.Receive(b);//получили размер массива
            for (int j = 0; j < k; j++)
            {
                bufStr += Convert.ToChar(b[j]);
            }
 
            MemoryStream MS = new MemoryStream(Convert.ToByte(bufStr.ToString()));
 
            BitmapImage Art3 = new BitmapImage();
            Art3.BeginInit();
            Art3.StreamSource = MS;
            Art3.EndInit();
 
            IM.Source = Art3;
0
18.10.2012, 20:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.10.2012, 20:23
Помогаю со студенческими работами здесь

Как передать byte[] в WebView для отображения PDF ?
Имеется pdf-файл в виде массива байт, каким образом можно передать этот массив в WebView, чтобы...

Как передать массив из базы данных (передать массив из php в javascript методом ajax)
&lt;?php //php страница qwe.php для обработки ajax запроса require_once...

Передать по TCP
Я хочу передать с клиента TCP андроид на Qt TCP сервер изображение, байты звука, размеры и хочу это...

Передать int по TCP
Я хочу передать через сокеты TCP размер изображения а затем само изображение. Как правильно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru