Aplikacja sieciowa (serwer) zawieszająca się aplikacja okienkowa

0

Witam mam dosyć nietypowy problem z aplikacją sieciową. Aplikacja ma pełnić rolę serwera,która ma przyjmować wiadomości od innej aplikacji i wysyłać potwierdzenie odebrania wiadomości.Problem polega na tym ,że kompilator nie chce wykonać fragmentu kodu(nie wyskakuja żadne błedy program automatycznie sie zawiesza) ,który jest odpowiedzialny za akceptacje klienta.Jeżeli któs mógłby mi wytłumaczyć przyczynę problemu byłbym bardzo wdzięczny.

namespace Aplikacjaserwer
{
    public partial class Form1 : Form
    {
        private TcpListener serwer;
        private TcpClient NewClient;
        
 
        public Form1()
        {
            
            InitializeComponent();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
 
        }
 
        private void label1_Click(object sender, EventArgs e)
        {
 
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            try
            {
                
                
                int port = System.Convert.ToInt16(numericUpDown1.Value);
                TcpListener serwer = new TcpListener(IPAddress.Any, port);
                serwer.Start();//Wlaczenie serwera
                serwer.Server.Listen(1);
                
                
                listBox1.Items.Add("Serwer zostal uruchomiony");
                //TcpClient NewClient = serwer.AcceptTcpClient();// -bez tego fragmentu kodu program sie nie zawiesza
                listBox1.Items.Add("Polaczono z "+serwer.LocalEndpoint);
                
 
               
 
                
 
            }
            
                catch (Exception ex)
            {
               listBox1.Items.Add("Błąd inicjacji serwera!");
                MessageBox.Show(ex.ToString(),"Błąd");
 
 
              }
            }
 
        public void button3_Click(object sender, EventArgs e)
        {
            try
            {
                NewClient.Close();
                serwer.Stop();
                listBox1.Items.Add("Serwer wyłączony");
 
            }
            catch (Exception ex)
            {
                listBox1.Items.Add("BLAD!!");
 
            }
 
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                byte[] b = new byte[100];
                int k = serwer.Server.Receive(b);
 
                for (int i = 0; i < k; i++)
                    listBox1.Items.Add(Convert.ToChar(b[i]));
                ASCIIEncoding asen = new ASCIIEncoding();
 
                serwer.Server.Send(asen.GetBytes("Wiadomosc zostala otrzymana"));//Acknowledgement
                listBox1.Items.Add("Wyslano potwierdzenie");
            }catch(Exception ex)
            {
                Console.WriteLine("Error..... " + ex.StackTrace);
 
 
            }
 
 
 
        }
        }
    }



 
0

Dałeś trochę za mało jasnego kodu.
W jakiej kolejności należy kliknąć te buttony? jak zaczynasz od Button1_Click to pewnie dostajesz NullReferenceException, bo twój TcpListener nie jest nigdzie inicjalizowany.
Poza tym programy nie zamykają się raczej ot tak, kliknij w VS Ctrl+Alt+E, zaznacz Thrown dla CLR Exceptions.

0
  1. Twoje pole
private TcpListener serwer;

nigdy nie jest inicjalizowane przynajmniej na to wygląda.
więc:

serwer = new TcpListener(IPAddress.Any, port);
  1. A najlepiej zamień to na ( w ramach sprawdzenia ):
IPAddress localAddr = IPAddress.Parse("127.0.0.1");
      serwer= new TcpListener(localAddr, port);
0

Witam kolejność naciskania przycisków to: 2,3,1.Problem pojawia się automatycznie po naciśnięciu 2 przyciskpo doodpowiednich daniu thrown dla CLR Exceptions.Na konsoli nie wyświetla się komunikat z błędami

0

Witam kolejność naciskania przycisków to: 2,3,1. Problem pojawia się automatycznie po naciśnięciu 2 przycisku nawet po dodaniu thrown dla CLR Exceptions.Na konsoli nie wyświetla się komunikat z błędami.

0

A tak w ogóle idea twojego logowania błędów jest tragiczna.
A jak zrobiłeś żeby w win forms konsola się pojawiła?

0

Kod z button2_Click chyba powinien zadziałać, sprawdź uprawnienia użytkownika na którym to uruchamiasz / firewall, może UAC nie pozwala Ci hostować aplikacji na twoim użytkowniku.

1 użytkowników online, w tym zalogowanych: 0, gości: 1