Diskuze: TCP client a server

C# .NET .NET (C# a Visual Basic) TCP client a server American English version English version

Avatar
tester
Člen
Avatar
tester:

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:

Ahoj, zkus vypnout firewall

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

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:

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:

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
Redaktor
Avatar
Odpovídá na tester
mkub:

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.