Клиент-сервер - Удаленный хост принудительно разорвал существующее подключение - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Есть два приложения клиент и сервер, при передаче сообщений выдает ошибку: Удаленный хост принудительно разорвал существующее подключение! Не могу понять в чем дело? Вот здесь происходит отправка:
                     double Poch = (Math.Exp((n + 1) * Math.Log(a))) / (fact(n) * (n - a));//Вероятность того, что в узле будет очередь
                     double Loch = (((Math.Exp((n + 1) * Math.Log(a))) * p0) / (n * fact(n))) * (1 / Math.Exp(2 * Math.Log(1 - a / n)));//Среднее число заявок в очереди на обслуживание
                     double Lsist = Loch + a;//Среднее число находящихся в системе заявок
                     double Toch = 1 / l * Loch;//Средняя продолжительность пребывания заявки в очереди
                     double Tsist = 1 / l * Lsist;//Средняя продолжительность пребывания заявки в системе
 
                     p0.ToString("0.#");
                     Poch.ToString("0.#");
                     Loch.ToString("0.#");
                     Lsist.ToString("0.#");
                     Toch.ToString("0.#");
                     Tsist.ToString("0.#");
 
                     string themsg = String.Format("{0};{1};{2};{3};{4};{5}", p0, Poch, Loch, Lsist, Toch, Tsist);
                     byte[] msg = Encoding.ASCII.GetBytes(themsg);
                     handler.Send(msg);
Здесь получение:
                    bytesrec = ssend.Receive(bytes);// на этом месте программа прерывается в ошибкой описанной выше
                    ansv = Encoding.ASCII.GetString(bytes, 0, bytesrec);
                    wansv = ansv.Split(';');
                   
                    textBox5.Text = wansv[0];
                    textBox6.Text = wansv[1];
                    textBox9.Text = wansv[2];
                    textBox10.Text = wansv[3];
                    textBox11.Text = wansv[4];
                    textBox12.Text = wansv[5];
Возможно такое, что размер передаваемых данных превышает допустимый?

Решение задачи: «Клиент-сервер - Удаленный хост принудительно разорвал существующее подключение»

textual
Листинг программы
using System;
using System.Net;
using System.Net.Sockets;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace SClient
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            byte[] bytes = new byte[1024];
 
            if (Convert.ToDouble(textBox4.Text) == 0)//Если количество каналов равно 0, то выводим сообщение об ошибке 404
            {
                MessageBox.Show("404");
            }
            else
            {
               try//Инструкция для поиска исключительных ситуаций
                {
                    string wrip = textBox1.Text;
                    IPHostEntry iphost = Dns.Resolve(wrip);//Поиск подходящего ip адреса для обслуживания
                    IPAddress ipaddr = iphost.AddressList[0];//Сохранение списка адресов устройства
                    IPEndPoint ipendpoint = new IPEndPoint(ipaddr, 1234);//Подготовка адреса локальной конечной точки
                    Socket ssend = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//Создание потокового сокета
                    ssend.Connect(ipendpoint);//Соединение сокета с удаленной конечной точкой
                    string themsq = String.Format("{0};{1};{2}", textBox2.Text, textBox3.Text, textBox4.Text);
                    byte[] msg = Encoding.ASCII.GetBytes(themsq);
                    ssend.Send(msg);
                    int bytesrec = ssend.Receive(bytes);
                    string ansv = Encoding.ASCII.GetString(bytes, 0, bytesrec);
                    string[] wansv = ansv.Split(';');
                                
                                                
                    listBox1.Items.Clear();
                    int n = Convert.ToInt32(textBox4.Text);
                    for (int i = 1; i <= n; i++)
                    {
                        listBox1.Items.Add("Р" + i + ":  " + wansv[i]);
                    }
 
                    listBox2.Items.Clear();
                    for (int i = 1; i <= n; i++)
                    {
                        listBox2.Items.Add("Р" + i + ":  " + wansv[i]);
                    }
                   
                    bytesrec = ssend.Receive(bytes);
                    ansv = Encoding.ASCII.GetString(bytes, 0, bytesrec);
                    wansv = ansv.Split(';');
 
                    listBox3.Items.Clear();
                    for (int i = 1; i <= 4; i++)
                    {
                        listBox3.Items.Add("Р" + i + ":  " + wansv[i]);
                    }
 
                    listBox4.Items.Clear();
                    for (int i = 1; i <= 4; i++)
                    {
                        listBox4.Items.Add("Р" + i + ":  " + wansv[i]);
                    }
                                              
 
                    int zayav = 1500;//Количество заявок, которые необходимо обслужить
                    int Och = 0;
                    double t = 0;
                    string f = null;
                    string date = null;
                    Random r = new Random();
                    for (int i = 0; i <= zayav; i++)
                    {
                            t = t - Math.Log(r.NextDouble()) / Convert.ToDouble(textBox2.Text); //Вычисление времени работы системы 
                            date = Convert.ToString(t);
                            msg = Encoding.ASCII.GetBytes(date);
                            ssend.Send(msg);
                            bytesrec = ssend.Receive(bytes);
                            f = Encoding.ASCII.GetString(bytes, 0, bytesrec);
                            if (f == "false")
                            {
                                Och++; //Количество заявок в очереди
                            }
                    }
                    
                    msg = Encoding.ASCII.GetBytes("fin");
                    ssend.Send(msg);
                    bytesrec = ssend.Receive(bytes);
                    ansv = Encoding.ASCII.GetString(bytes, 0, bytesrec);
                    wansv = ansv.Split(';');
                                      
                    textBox17.Text = wansv[0];
                    textBox18.Text = wansv[1];
                    textBox19.Text = wansv[2];
                    textBox20.Text = wansv[3];
                    textBox5.Text = wansv[4];
                    textBox6.Text = wansv[5];
                    textBox9.Text = wansv[6];
                    textBox10.Text = wansv[7];
                    textBox11.Text = wansv[8];
                    textBox12.Text = wansv[9];
                    textBox13.Text = wansv[4];
                    textBox14.Text = wansv[5];
                    textBox21.Text = Convert.ToString(t);
                    textBox22.Text = Convert.ToString(zayav);
                                 
                  }
                catch (Exception)
               {
                    MessageBox.Show("Exception");
               }
            }
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.083 из 5
Похожие ответы