Почему пишет при передачи информации через сокеты пишет "индекс находится вне границ массива" - 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];