C# programowanie sieciowe

0

Witam, zaczynam dopiero z programowaniem w C# i chciałbym zrobić sobie taka prostą aplikacje sieciową która będzie składała się z serwera i klienta opartych na tcp. Ogólnie wiem już na jakiej zasadzie działają te połączenia napisałem sobie również prostą aplikacje która wygląda następująco
klient

TcpClient client = new TcpClient();
                client.Connect("localhost", 8081);
                NetworkStream stream = client.GetStream();
                //byte dane = (byte)textBox1.Text;
                stream.WriteByte(1);
                byte fromclient = (byte)stream.ReadByte();
                if (fromclient == 1) { label1.Text = "podlaczony"; }
                stream.Close();
                client.Close(); 

serwer

 TcpListener listener = new TcpListener(IPAddress.Any, 8081);
            listener.Start();
            TcpClient client = listener.AcceptTcpClient();
            NetworkStream stream = client.GetStream();
            IPEndPoint IP = (IPEndPoint)client.Client.RemoteEndPoint;
            listBox1.Items.Add("[" + IP.ToString() + "] : nawiazano polaczenie");
            byte fromclient = (byte)stream.ReadByte();
            if (fromclient == 1) { label1.Text = "polaczony"; }
            stream.WriteByte(1);

            listener.Stop(); 

I teraz chodzi mi o to czy jest możliwość żeby klient nie musiał wpisywać adresu IP serwera tylko po naciśnięciu "połącz z serwerem" program klient by się łączył z serwerem?

0

pytanie niezrozumiałe. twój klient łączy się w tej chwili z serwerem localhost, jak jest w drugiej linijce. co rozumiesz przez „nie musiał wpisywać adresu IP serwera”?

0

I teraz chodzi mi o to czy jest możliwość żeby klient nie musiał wpisywać adresu IP serwera tylko po naciśnięciu "połącz z serwerem" program klient by się łączył z serwerem?

Musisz założyć swój własny serwer (lub jakiś wykupić; ew.darmowy) ze stałym adresem i go na sztywno wpisać do programu.
Najlepiej byłoby założyć kilka na różnych serwerach, aby w razie, gdy jeden przestanie działać program łączył się z drugim (oczywiście, jeżeli nie robisz czegoś większego, to jeden powinien wystarczyć).

0

jeżeli serwer jest w tej samej sieci LAN to serwer może rozgłaszać swoją aktywność przez UDP Broadcast
wtedy możesz zrobić żeby klient wyłapywał aktywne serwery i dać userowi do wyboru jednym kliknięciem z którym chciałby się połączyć

jeżeli klienci mają być porozsiewani po świecie to jedyna opcja żeby istniał wspólny serwer (lub grupa serwerów) o stałym IP, lub stałym hoście (np dzięki dyndns.com) z którymi wszyscy klienci będą się łączyć

podziemie Internetu używa jeszcze jednej metody - istnieją boty, które siedzą na ustalonym kanale IRC - klient łączy się z tym kanałem IRC, rzuca znanym dla wtajemniczonych hasłem, a bot odpowiada adresem IP serwera na którym aktualnie znajdują się szukane treści

0
gfdgfsdg napisał(a)

jeżeli serwer jest w tej samej sieci LAN to serwer może rozgłaszać swoją aktywność przez UDP Broadcast
wtedy możesz zrobić żeby klient wyłapywał aktywne serwery i dać userowi do wyboru jednym kliknięciem z którym chciałby się połączyć

Być może nie do końca jasno opisałem cały problem ale właśnie chodziło mi o coś takiego żeby serwer rozgłaszał swoją aktywność a klienci wyłapywali aktywność serwera i podłączali się do niego. Czy mógłby ktoś trochę naprowadzić jak to zrobić?

Pozdrawiam

0
Zoni napisał(a)
gfdgfsdg napisał(a)

jeżeli serwer jest w tej samej sieci LAN to serwer może rozgłaszać swoją aktywność przez UDP Broadcast
wtedy możesz zrobić żeby klient wyłapywał aktywne serwery i dać userowi do wyboru jednym kliknięciem z którym chciałby się połączyć

Być może nie do końca jasno opisałem cały problem ale właśnie chodziło mi o coś takiego żeby serwer rozgłaszał swoją aktywność a klienci wyłapywali aktywność serwera i podłączali się do niego. Czy mógłby ktoś trochę naprowadzić jak to zrobić?

Pozdrawiam

http://bit.ly/nQqADC

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.