Почему пишет при передачи информации через сокеты пишет "индекс находится вне границ массива" - C#
Формулировка задачи:
Во время выполнения кода сервера, при получении данных они оказываются пустыми. Кто сможет объяснить эту непонятную для меня магию. Вот код клиента: И код сервера:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.Net.Sockets; using System.Threading.Tasks; namespace Пульт { class Program { static void Main(string[] args) { byte[] msg = { 0x7 }; IPEndPoint ipEndPoint = new IPEndPoint(IPAddress.Loopback, 5300); Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); Console.Write("Поиск сервера"); Console.WriteLine(); Console.Beep(); s.Connect(ipEndPoint); Console.Write("Подключён к серверу"); Console.WriteLine(); Console.Write("Отправляю данные"); Console.WriteLine(); while (true) { s.Send(msg); } Console.Write(msg[0]); Console.Write(" Данные отправлены!"); Console.WriteLine(); s.Close(); } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.Net.Sockets; using System.Threading.Tasks; namespace Приёмник_сокеты { class Program { static void Main(string[] args) { IPAddress ipAddress = null; //IP-адресс IPEndPoint Addr = null; //конечная точка(IP и порт) Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); //Создаем основной сокет byte[] input_data = new byte[s.Available]; string input_text; Addr = new IPEndPoint(IPAddress.Any, 5300); //"localhost" = 127.0.0.1 s.Bind(Addr); //"Адресуем" сокет s.Listen(10); //Обозначаем количество ожидающих в очереди на подключение Console.Write("Ждём подключение"); Console.WriteLine(); Socket cl_s = s.Accept(); //Ожидаем подключения Console.Write("Пользователь подключён!"); Console.WriteLine(); cl_s.Receive(input_data); Console.Write("Данные получены!"); Console.WriteLine(); if (input_data[0] == (byte)0x7) { Console.Write("Данные прошли проверку!"); } else { Console.Beep(); Console.Write("Данные не прошли проверку"); } Console.WriteLine(); cl_s.Close(); s.Close(); } } }
Решение задачи: «Почему пишет при передачи информации через сокеты пишет "индекс находится вне границ массива"»
textual
Листинг программы
byte[] input_data = new byte[s.Available];
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д