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
tester
Člen
Avatar
tester:1.8.2014 14:55

Ahoj, zkouším si vytvořit program pro komunikaci přes TCP. Při zadání adresy 127.0.0.1 a spuštění 2 aplikací na jednom pc vše funguje. Jak ale spustím klienta na jednom pc a server na druhém pc, klient se nepřipojí.

Adresa klienta: 192.168.1.100
Adresa serveru: 192.168.1.136

Kód klienta:

string text = null;
            TcpClient klient = new TcpClient("192.168.1.136", port);
            NetworkStream stream;
            do
            {
                Console.Write("Zadej text: ");
                text = Console.ReadLine();

                byte[] data = System.Text.Encoding.ASCII.GetBytes(text);

                stream = klient.GetStream();
                stream.Write(data, 0, data.Length);
                data = new Byte[256];

                // String to store the response ASCII representation.
                String responseData = String.Empty;

                // Read the first batch of the TcpServer response bytes.
                Int32 bytes = stream.Read(data, 0, data.Length);
                responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes);
                Console.WriteLine("Přijato: {0}", responseData);
            } while (text != "Konec");
            stream.Close();
            klient.Close();

Kód serveru:

IPAddress address = IPAddress.Any;
            TcpListener server = new TcpListener(address,port);
            server.Start();

            Byte[] bytes = new Byte[256];
            string data = null;
            Console.WriteLine("Čekám na připojení");
            do
            {
                TcpClient klient = server.AcceptTcpClient();
                NetworkStream stream = klient.GetStream();
                int i;

                while ((i = stream.Read(bytes, 0, bytes.Length)) != 0)
                {
                    data = System.Text.Encoding.ASCII.GetString(bytes, 0, i);
                    Console.WriteLine("Přijato: {0}", data);
                    string odpoved = "OK";

                    byte[] msg = System.Text.Encoding.ASCII.GetBytes(odpoved);
                    stream.Write(msg, 0, msg.Length);

                    if (data == "Konec")
                    {
                        break;
                    }
                }
                klient.Close();
            } while (data != "Konec");
            server.Stop();

Díky za radu

 
Odpovědět
1.8.2014 14:55
Avatar
korfik21
Člen
Avatar
korfik21:5.8.2014 10:17

Ahoj, zkus vypnout firewall

 
Nahoru Odpovědět
5.8.2014 10:17
Avatar
Odpovídá na tester
Vojtěch Pospíchal:5.8.2014 10:21

Jsou na stejné síti?

 
Nahoru Odpovědět
5.8.2014 10:21
Avatar
Odpovídá na tester
Michal Štěpánek:5.8.2014 10:49

Ten port, na kterém ten server má komunikovat, má povolenou komunikaci s tou konkrétní IP adresou?

Nahoru Odpovědět
5.8.2014 10:49
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
xxxvodnikxxx
Člen
Avatar
xxxvodnikxxx:5.8.2014 11:21

Kódem by to jako asi bejt nemělo, takže bude problém v cestě..
viz výše

  • stejná síť ? (LAN, 192.168.XX jsou LANkový /resp privátní/ ip )
  • neblokuje to firewall ? (klient i server musí bejt propustnej na daným portu, danej port nesmí bejt blokovanej jinou app)

..

Nahoru Odpovědět
5.8.2014 11:21
Unix- svět, kde chcete být nulou :) (UID)
Avatar
tester
Člen
Avatar
tester:5.8.2014 15:49

Počítače ve stejné siťi jsou. Adresy jsou přidělovány DHCP serverem (TP-LINK WR841ND). V kódu chyba určitě není, protože sem vše udělal v opačném pořadí (prohodil aplikaci z jedné na druhé(clienta za server)) a komunikace fungovala. Problém by tedy asi mohl být v těch portech. Stačí je přidělit na straně routeru?

 
Nahoru Odpovědět
5.8.2014 15:49
Avatar
mkub
Tvůrce
Avatar
Odpovídá na tester
mkub:5.8.2014 16:19

problem moze byt bud vo wirewalle, moze byt aj v portoch, ze ci na porte pocuva server a ze ci viacere sluzby sa na danom porte nebiju

 
Nahoru Odpovědět
5.8.2014 16:19
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 7 zpráv z 7.