NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
S účinností od 26. 3. jsme aktualizovali Zásady zpracování osobních údajů – doplnili jsme informace o monitorování telefonických hovorů se zájemci o studium. Ostatní části zůstávají beze změn.

Diskuze: TCP/IP client- server WinForms

V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Jak se ti líbí článek?
Před uložením hodnocení, popiš prosím autorovi, co je špatněZnaků 0 z 50-500
Jak se ti kurz líbí?
Tvé hodnocení kurzuZnaků 0 z 50-500
Aktivity
Avatar
archie777
Člen
Avatar
archie777:26.1.2014 12:46

Ahoj

amatéřim s C# a dostal jsem se k místnímu tutorialu na jednoduchý TCP/IP client pomocí sockets

v problematice tcp/ip a socketu se moc neorientuji, zkusil sem si jen projít místní kód a hodit ho do jednoduchých forms, problém je, že se pokud nechám server naslouchat, data od klienta obdrží jen jednou a další nikoliv, možná bude problém v rozvržení kodu mezi eventy

public Form1()
    {
        InitializeComponent();


        testovaci_socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        testovaci_socket.Bind(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 6666)); //server zacne naslouchat nas port 6666


        testovaci_socket.Listen(1);


    }
private void naslouchej_Click(object sender, EventArgs e)
       {




           prichozidata = testovaci_socket.Accept();
           data = new byte[prichozidata.SendBufferSize];
           int obdrzena = prichozidata.Receive(data);
           byte[] chycena_data = new byte[obdrzena];
           for (int i = 0; i < obdrzena; i++) chycena_data[i] =  data[i];
        string prelozena_data = Encoding.Default.GetString(chycena_data);
           listBox1.Items.Add(prelozena_data);
}

otázka zní, v čem by mohla být chyba?

díky za radu

Editováno 26.1.2014 12:48
 
Odpovědět
26.1.2014 12:46
Avatar
archie777
Člen
Avatar
Odpovídá na archie777
archie777:26.1.2014 12:53

klient

public Form1()
       {
           InitializeComponent();
           odesilateluvs.Connect(IPAddress.Parse("127.0.0.1"), 6666);


       }




       private void button1_Click(object sender, EventArgs e)
       {
           try
           {

               text_k_odeslani = textBox1.Text;
               byte[] data = Encoding.Default.GetBytes(text_k_odeslani);
               odesilateluvs.Send(data);
               textBox1.Text = "";
           }
           catch
           {
               MessageBox.Show("Nepodařilo se odeslat");
           }
 
Nahoru Odpovědět
26.1.2014 12:53
Avatar
archie777
Člen
Avatar
archie777:28.1.2014 8:53

netušíte někdo alespoň náznakem, kde je chyba?

klient se připojí (v konstruktoru) a když na serveru stisknu cudlik Naslouchej, tak dam na klientovi odeslat a první zpráva na server dojde..

druhá už ne a když zkusim na serveru na Naslouchat kliknout podruhé, server zatuhne

klient ale vyjímku nehlásí a zrejme data odeslal, jen server druhou zprávu neumí příjmout

 
Nahoru Odpovědět
28.1.2014 8:53
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.