Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

C# Sockets mali Problem

[es] :: .NET :: .NET Desktop razvoj :: C# Sockets mali Problem

[ Pregleda: 1450 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

k4rl0
Localhost

Član broj: 87683
Poruke: 142
*.adsl.net.t-com.hr.



Profil

icon C# Sockets mali Problem13.11.2007. u 21:35 - pre 157 meseci
Pozdrav grupi!
Poceo sam malo sa network programiranjem i sve je ok,kristanlo mi je jasno kako radi ovaj primjer,naime samo na localhostu(127.0.0.1).
Mene sad zanima kak da npr. klijenta dam prijatelju i da on pokrene klijenta i spoji se na server koj sam ja kod sebe pokrenuo.
Jasno mi je da nemam staticnu adresu pa cim resetiram ruter dolazi do promjene no nije u tome stvar.
Pogledam si trenutni IP na internetu(IP od rutera) i to je 78.1.xxx.xxx.
Stavim da taj IP bude IP na koji se klijent spaja.
E sad..IP od servera stavim da bude opet 127.0.0.1,dakle server napravim na local host adresi a klijent se spaja na 78.1.xxx.xxx,tj. moju internet adresu.
Meni to naime ne radi,ne kuzim zasto,imam ruter ali sam stavio da port koj koristim za spajanje(1008) forwardam na svoj komp i opet ne radi.
Jesam mozda krivo Ip adrese namjestio ili..?
Hvala na odgovorima!!
Evo koda:

KLIJENT
Code:
using System;
using System.Net.Sockets;
using System.Net;
public class Client
{
    static public void Main(string[] Args)
    {
        TcpClient socket;
        try
        {
            socket = new TcpClient("78.1.xxx.xxx", 1008);
        }
        catch
        {
            Console.WriteLine(
            "Nisam se uspio spojiti na server!");
            Console.ReadKey();
            return;
        }
        NetworkStream networkStream = socketForServer.GetStream();
        System.IO.StreamReader streamReader =
        new System.IO.StreamReader(networkStream);
        System.IO.StreamWriter streamWriter =
        new System.IO.StreamWriter(networkStream);
        try
        {
            string outputString;
            {
                outputString = streamReader.ReadLine();
                Console.WriteLine(outputString);
                streamWriter.WriteLine("Ovu poruku je klijent poslo!");
                Console.WriteLine("Poruka poslana serveru.");
                streamWriter.Flush();
            }
        }
        catch
        {
            Console.WriteLine("Exception pri citanju sa servera!");
        }
        networkStream.Close();
        Console.ReadKey();
    }
}  


SERVER
Code:
using System;
using System.Net;  
using System.Net.Sockets;
public class Server
{
    public static void Main()
    {
        IPAddress ip = IPAddress.Parse("127.0.0.1");
        TcpListener tcpListener = new TcpListener(ip,1008);
        tcpListener.Start();
        Socket socket = tcpListener.AcceptSocket();
        if (socket.Connected)
        {
            Console.WriteLine("Klijent se spojio!");
            NetworkStream nStream = new NetworkStream(socketForClient);
            System.IO.StreamWriter streamWriter =
            new System.IO.StreamWriter(nStream);
            System.IO.StreamReader streamReader =
            new System.IO.StreamReader(nStream);
            string theString = "Ovo je server poslao klijentu.";
            streamWriter.WriteLine(theString);
            Console.WriteLine(theString);
            streamWriter.Flush();
            theString = streamReader.ReadLine();
            Console.WriteLine(theString);
            streamReader.Close();
            networkStream.Close();
            streamWriter.Close();
        }
        socketForClient.Close();
        Console.WriteLine("Izlaz...");
        Console.ReadKey();
    }
}  
 
Odgovor na temu

toxi_programer
Nemanja Todić
Beograd

Član broj: 104396
Poruke: 464
*.adsl-3.sezampro.yu.

Sajt: www.articles411.com


+8 Profil

icon Re: C# Sockets mali Problem14.11.2007. u 13:45 - pre 157 meseci
Ne znam kako je ovo moglo da se kompajlira jer imena koja si dao nisu baš dobra( jedan obj.čas zoveš ovako čas onako )

Bilo mi jednostavnije da se uopšte ne koristi socket klasa pa sam malo promenio kod i sad radi sve sa TcpClient i TcpListener, ali ono što je bitno jeste da je greška kod servera. Za ip adresu ti su uneo adresu localhosta a adresa koju unosiš je ustvari ona sa koje se klijent može konektovati a to bi trebalo da bude bilo koja adresa a to postižeš tako što umesto adrese uneseš "0" (nula).



IZMENA: Uh zaboravih kodove


Code:

using System;
using System.Net;
using System.Net.Sockets;
public class Server
{
    public static void Main()
    {
        IPAddress ip = IPAddress.Parse("0");
        TcpListener tcpListener = new TcpListener(ip, 1008);
        tcpListener.Start(2);
        TcpClient tcpClient = tcpListener.AcceptTcpClient();

        Console.WriteLine("Klijent se spojio!");
        NetworkStream nStream = tcpClient.GetStream();
        System.IO.StreamWriter streamWriter =
        new System.IO.StreamWriter(nStream);
        System.IO.StreamReader streamReader =
        new System.IO.StreamReader(nStream);
        string theString = "Ovo je server poslao klijentu.";
        streamWriter.WriteLine(theString);
        Console.WriteLine(theString);
        streamWriter.Flush();
        theString = streamReader.ReadLine();
        Console.WriteLine(theString);
        streamReader.Close();
        nStream.Close();
        streamWriter.Close();

        tcpClient.Close();
        Console.WriteLine("Izlaz...");
        Console.ReadKey();
    }
}  



Code:

using System;
using System.Net.Sockets;
using System.Net;
public class Client
{
    static public void Main(string[] Args)
    {
        TcpClient socket;
        try
        {
            socket = new TcpClient();
            socket.Connect("77.105.23.246", 1008); //ip adresa na koju se konektuješ, ovo je moja adresa.
        }
        catch
        {
            Console.WriteLine(
            "Nisam se uspio spojiti na server!");
            Console.ReadKey();
            return;
        }
        NetworkStream networkStream = socket.GetStream();
        System.IO.StreamReader streamReader =
        new System.IO.StreamReader(networkStream);
        System.IO.StreamWriter streamWriter =
        new System.IO.StreamWriter(networkStream);
        try
        {
            string outputString;
            {
                outputString = streamReader.ReadLine();
                Console.WriteLine(outputString);
                streamWriter.WriteLine("Ovu poruku je klijent poslo!");
                Console.WriteLine("Poruka poslana serveru.");
                streamWriter.Flush();
            }
        }
        catch
        {
            Console.WriteLine("Exception pri citanju sa servera!");
        }
        networkStream.Close();
        Console.ReadKey();
    }




Uzgred, voleo bih da isprobamo nešto u vezi ovog( pošto imaš ruter) pa bih te molio da mi pošalješ tvoji MSN adresu na PP.
 
Odgovor na temu

[es] :: .NET :: .NET Desktop razvoj :: C# Sockets mali Problem

[ Pregleda: 1450 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.