Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
3 / 3 / 2
Регистрация: 04.11.2013
Сообщений: 23

Как отправить byte[] с сервера клиенту через socket

23.03.2014, 17:34. Показов 3198. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как отправить byte[] с сервера клиенту через socket? Я могу отправить с клиента на сервер вот так.
Клиент:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
            string ipadr = "127.0.0.0";
            IPHostEntry ipHost = Dns.Resolve(ipadr);
            IPAddress ipAddr = ipHost.AddressList[0];
            IPEndPoint ipEndPoint = new IPEndPoint(ipAddr, 1111);
            Socket send = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            send.Connect(ipEndPoint);
            Console.WriteLine("Socket connected to" + send.RemoteEndPoint.ToString());
            string n = "3;4,8;2;1000;";     //переменные которые нужно передать
 
            byte[] msg = Encoding.ASCII.GetBytes(n);
            int bytesSent = send.Send(msg);
            send.Shutdown(SocketShutdown.Both);
            send.Close();
            Console.ReadKey();
Сервер:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
string[] n1 = new string[5];
            string ipadr = "127.0.0.0";
            IPHostEntry ipHost = Dns.Resolve(ipadr);
            IPAddress ipAddr = ipHost.AddressList[0];
            IPEndPoint ipEndPoint = new IPEndPoint(ipAddr, 1111);
            Socket sListener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            try
            {
                sListener.Bind(ipEndPoint);
                sListener.Listen(10);
                while (true)
                {
                    Console.WriteLine("Waiting for a connection on port {0}", ipEndPoint);
                    Socket handler = sListener.Accept();
                    string data = "";
                    try
                    {
                        byte[] bytes = new byte[1024];
                        int bytesRec = handler.Receive(bytes);
                        data = Encoding.ASCII.GetString(bytes, 0, bytesRec);
                        int l = 0;
                        int k = 0;
                        int p = 0;
                        for (int i = 0; i < data.Length; i++)
                        {
                            if (data[i] != ';')
                            {
                                k = k + 1;
                            }
                            else
                            {
                                for (int j = l; j < k; j++)
                                {
                                    n1[p] = n1[p] + data[j];
                                }
                                l = k + 1;
                                k = k + 1;
                                p = p + 1;
                            }
                        }
                        int n = 0;
                        while (n1[n] != null)
                        {
                            Console.WriteLine(n1[n]);
                            n = n + 1;
                        }
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e.ToString());
                    }
                    Console.WriteLine("Text Received:   {0}", data);
                    string theReply = "Thank you for those  " + data.Length.ToString() + "characters . . .";
                    byte[] msg = Encoding.ASCII.GetBytes(theReply);
                    handler.Send(msg);
                    handler.Shutdown(SocketShutdown.Both);
                    handler.Close();
                    Console.ReadKey();
                    break;
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }
Но как отправить с сервера на клиент?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.03.2014, 17:34
Ответы с готовыми решениями:

Ошибка: Socket WouldBlock, при отправке сообщения от сервера к клиенту
Привет, есть некий сервер, раньше работало все четко, а после последних изменений (незначительных) стала вылазить ошибка в сабже, и только...

Передача содержимого от сервера клиенту или наоборот через TCP
Вопрос на засыпку. Есть сервер который должен например передать фотографию клиенту или какой то огромный текст, мы знаем что можно...

Как передать данные от сервера клиенту?
Существует серверное C# приложение, и клиентское. Необходимо, чтобы сервер передавал данные клиентскому приложению (может быть запущено...

1
 Аватар для FrolBrol
15 / 15 / 6
Регистрация: 02.01.2012
Сообщений: 73
24.03.2014, 21:03
Да все одинаково. После того, как клиент подсоединился к серверу можешь передавать/получать информацию, независимо от сторон.

Реализация через TcpClient (более удобно, чем через сам socket. Socket можно получить tcpClient.Client)
отправка (на стороне клиента, но это не важно)
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
TcpClient tcpClient = null;
            try                         
            {
                IPAddress ipAddr = IPAddress.Parse("0.0.0.0");
                IPEndPoint endPoint = new IPEndPoint(ipAddr, порт); 
                tcpClient = new TcpClient(endPoint); // создание клиета tcp с локальной точкой
              
                tcpClient.Connect(ip сервера, порт); //соединение с сервером 
                //на этом месте есть соединение 
                
                NetworkStream tcpStream = tcpClient.GetStream(); //создание потока для передачи
                byte[] bytes = Encoding.ASCII.GetBytes("сообщение"); //создание массива байт для передачи
                tcpStream.Write(bytes, 0, bytes.Length);//отправка
получение:
C#
1
2
3
4
5
6
7
8
9
bytes = new byte[tcpClient.ReceiveBufferSize];  // размер для приема (стандартный размер)
                int bytesRead = 0;
                string returnData = "";
                do
                {
                    bytesRead = tcpStream.Read(bytes, 0, tcpClient.ReceiveBufferSize);
                    returnData += Encoding.ASCII.GetString(bytes, 0, bytesRead);
                } while (tcpStream.DataAvailable); //проверка на остаточные данные
//returnData - полученное сообщение
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.03.2014, 21:03
Помогаю со студенческими работами здесь

Как передать объект от сервера к клиенту?
Только-только знакомплюсь с клиент-серверным программированием. Хочу передать объект, например class A { public string name =...

Как клиенту воспользоваться методом сервера
Есть сервер ФИС с данными, клиенту требуется отправить xml-файл на этот сервер. По идее, это можно сделать с помощью метода Import, который...

Как послать клиенту сообщение от сервера используя Socket?
Задача на первый взгляд показалась мне простой: создать сетевой планировщик задач. Задача сервера: хранить список задач для разных...

Как отправить по почте пароль (какое-нибудь сообщение), сгенерированный на сервере, с сервера к клиенту с пощощью ASP ?
Как отправить по почте пароль (какое-нибудь сообщение), сгенерированный на сервере, с сервера к клиенту с пощощью ASP ?

Как сделать что-бы клиенту загружались страницы не из кэша, а с сервера?
У меня страница нередко оновляется и хотелось бы что-бы клиенту каждый раз предоставлялась новая информация, а не кешированные данные.


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru