NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Ladislav Niderle:8.9.2015 15:53

Ahoj, mohl by mi někdo poradit jak v c# udělat správně komunikaci se serverem? Mám IP i port a momentálně jsem schopen sice na server poslat zprávu a počkat na jeho odpověď, jelikož tak náš systém funguje, ale dostal jsem se do problému, že nejsem schopen navázat spojení, kdy je asi odezva delší a tak dostanu proměnnou connect do stavu false.

Zde je zdroják jak se snažím navázat spoje:

System.Net.Sockets.TcpClient clientSocket;

        private void Connect(System.Net.Sockets.TcpClient clientSocket, string IP, int Port)
        {
            //clientSocket.Connect(IP, Port);
            try
            {
                clientSocket.BeginConnect(Properties.Settings.Default.IP, Properties.Settings.Default.Port, new AsyncCallback(ConnectCallback), null);
            }
            catch
            {
            }


        }

        private void ConnectCallback(IAsyncResult result)
        {
            try
            {
                clientSocket.EndConnect(result);  // dokončíme připojování
            }

            catch(ObjectDisposedException e)
            {
                // něčo je špatně
                MessageBox.Show("Něco je špatně");
            }
            catch
            {
                // je konec
                //MessageBox.Show("Nepovedlo se připojit. Konec");
            }
          }

        public string OdeslaniTransakce(System.Net.Sockets.TcpClient clientSocket,string IP, int Port, string zprava)
        {
            readData = null;
            if (clientSocket.Connected == false) Connect(clientSocket, IP, Port);
            ...
         }

Pokud někdo bude vědět kde mám chybu, tak budu jedině rád, jelikož si s tím už nevím rady.

Takže předem všem moc děkuji za odpověď

 
Odpovědět
8.9.2015 15:53
Avatar
vodslon
Člen
Avatar
vodslon:9.9.2015 12:02

Ahoj, otázka je co dělá ten server, jeslti to neukončuje nebo proč to odmítá. Jinak já pro komunaci používám třídu socket je o hodně bohatší. Taky na zamyšlenou jeslti používát Asynchroní přístup, pokud je to pro jeden server a aplikace se bude ptát a server odpovídat, je to zbytečně složité. Synchroní přístup Ti bude uplně stačit.

 
Nahoru Odpovědět
9.9.2015 12:02
Avatar
Ladislav Niderle:10.9.2015 18:42

Ahoj, mně dělá problém momentálně to, že se proměnná connect připojí a dostane odpověď a abych mohl dál pracovat, tak předávám v parametrech právě tu proměnnou, ale při druhé komunikaci se zase tváří, že je ve stavu false a nejsem schopen ji nahodit. Jinak náš server funguje na principu dotaz z klienta a odpověď ze serveru, kdy to může být i tam, že klient něco chce a server to udělá, jelikož většina věcí je právě na serveru a klientovi po dokončení pošle zprávu, že je to hotovo. Mohl by jsi mi pls. dát nějaký odkaz na práci s tou třídou socket? Nebo jak správně pracovat či využít synchronní přístup, kde se musí provést přihlášení a pak i dále se posílají z jiného následného formuláře dotazy na server.

Moc Děkuji

 
Nahoru Odpovědět
10.9.2015 18:42
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.