IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
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.