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

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

23.03.2014, 17:34. Показов 3225. Ответов 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
Ответ Создать тему
Новые блоги и статьи
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Вот уже год прошел, как у меня домен в reg.ru ...
Etyuhibosecyu 16.04.2026
И ничего они мне не сделали. Если отвязать карту, никакие услуги они не навяжут. Я бы с радостью продлил еще на два года, чтобы не мучиться с временным доменом и меня уже знали по red-star-soft. com,. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru