Diskuze: TCP/IP client- server WinForms

C# .NET .NET (C# a Visual Basic) TCP/IP client- server WinForms American English version English version

Avatar
archie777
Člen
Avatar
archie777:

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:

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:

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.