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

					Člen				
			
Zobrazeno 10 zpráv z 10.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.


Nemůže to být tím, že už je připojený (po té první zprávě) a pokouší se připojit podruhé? Nikde nevidím, že by se po odeslání zprávy odpojil...
Ja si myslím že chyba je skôr v servery, lebo keď sa klient chce druhý krát pripojiť a nepodarí sa mu to(logicky ked už pripojený je) tak vyhodí hlášku "Nepodarilo sa pripojiť" a pokračuje dalej na odosielanie textu počas toho ako je stále pripojený.
To je právě to, co si nemyslím, protože máš pokus o připojení v try-catch bloku, vyhodí výjimku a dál nepokračuje...
Neviem no. Keď som to mal urobené v Win Forms kde som mal tlačitko zvlášť na pripojenie a zvlášť na odosielanie textu z textboxu tak sa to chovalo rovnako. Na začiatku som kliknul pripojiť, išlo fajn. Potom som napísal text a poslal, tiež išlo. Znova som napísal text a dal poslať no správa už nedošla/neodišla. S gui som mal tento základ klient-server rovnaký.
zkus to spojení prostě uzavřít
class Program
{
    static Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
    static void Main(string[] args)
    {
        while (true)
        {
            Console.WriteLine("Prípájam!....");
            try
            {
                s.Connect(IPAddress.Parse("127.0.0.1"), 80);
                Console.WriteLine("Pripojene!");
            }
            catch
            {
                Console.WriteLine("Nepodarilo sa pripojiť");
            }
            Console.WriteLine("Vložte text čo chcete poslať!:");
            string dataP = Console.ReadLine();
            try
            {
                byte[] data = Encoding.Unicode.GetBytes(dataP);
                s.Send(data);
                Console.WriteLine("Odoslané");
                Console.WriteLine("-------------------");
                Console.WriteLine("-------------------");
                Console.WriteLine("-------------------");
            }
            catch
            {
                Console.WriteLine("Niekde nastala chyba!");
            }
            finally
            {
                //zavřít spojení se serverem
            }
        }
    }
}Ok dik, keď budem doma tak to skúsim či to bude fungovať.
Mě osobně připadâ zvláštní se u TCP komunikace pořád odpojovat a připojovat... Co takhle prostě posunout while cyklus, aby se to jednou připojilo a opakovalo se jenom načtení + odeslání zpráv?
A vidím i chybu na serveru (a to jsem na do C# TCPčka jenom nahlídnul,
abych viděl, jak by bylo těžký udělat spyware  )
)
socket.Listen(1);
while (true)
{
    Socket acceptdata = socket.Accept();Ty řekneš serveru, že má pustit k sobě jenom jednoho klienta, ale
snažíš se ho několikrát připojit-odeslat/přijmout zprávu-odpojit a celé
dokola. Jistě, že ti to nefunguje, protože při dalším pokusu o připojení
ti server "dalšího" klienta již odmítne. (Viz tip, co jsem napsal výše).
Pokud říkám bláboly, tak mě opravte, v C# teprv začínám. (+ jsou 2
hodiny v noci  )
 )
 
						Zobrazeno 10 zpráv z 10.
 
				
