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

IRCServer problem

[es] :: Java :: IRCServer problem

[ Pregleda: 2880 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

makari

Član broj: 77649
Poruke: 12
*.PPPoE-7237.sa.bih.net.ba.



Profil

icon IRCServer problem11.06.2007. u 22:18 - pre 205 meseci
Kako da program pamti IP adrese pod siframa :S


Code:
1.     /*************************
2.    Server.java
3.    *************************/
4.    import java.io.*;
5.    import java.net.*;
6.     
7.    public class  Server
8.    {    
9.        public static void main(String[] args) throws IOException
10.        {
11.            int PORT = 8134;
12.            InputStream inStream;
13.            DataInputStream inDataStream;
14.            OutputStream outStream;
15.            DataOutputStream outDataStream;
16.            String message="";
17.            String received="";
18.     
19.            System.out.println("Chat Server Started");
20.     
21.            ServerSocket sock = new ServerSocket(PORT);
22.            Socket conn = sock.accept();    
23.            do{
24.            inStream = conn.getInputStream ();
25.            inDataStream = new DataInputStream ( inStream );
26.            message = inDataStream.readUTF();        
27.            System.out.println("Client sent: "+message);
28.     
29.            DataInputStream dis = new DataInputStream(System.in);
30.            message = dis.readLine();
31.            outStream = conn.getOutputStream();
32.            outDataStream = new DataOutputStream (outStream);    
33.            System.out.println("Enter your message here: ");
34.            outDataStream.writeUTF(message);    
35.            }while(!message.equals("bye"));
36.            conn.close();
37.        }
38.    }
39.     
40.     
41.    /******************************
42.    Client.java
43.    *****************************/
44.    import java.net.*;
45.    import java.io.*;
46.     
47.    public class Client 
48.    {        
49.        public static void main(String args[]) throws IOException
50.        {
51.            int PORT = 8134;
52.            InputStream inStream;
53.            DataInputStream inDataStream;
54.            OutputStream outStream;
55.            DataOutputStream outDataStream;
56.            String message = "";
57.                
58.            InetAddress host = InetAddress.getLocalHost();
59.            String diffHost = args[0];
60.            Socket sock = new Socket(diffHost,PORT);
61.            System.out.println("Chat Client Started");
62.            do{
63.                System.out.println("Enter your message here: ");
64.                DataInputStream dis = new DataInputStream(System.in);
65.                message = dis.readLine();
66.                outStream = sock.getOutputStream();
67.                outDataStream = new DataOutputStream (outStream);        
68.                outDataStream.writeUTF(message);    
69.     
70.                inStream = sock.getInputStream ();
71.                inDataStream = new DataInputStream ( inStream );
72.                message = inDataStream.readUTF();
73.                System.out.println("Server Sent: "+message);
74.            }while(!message.equals("bye"));
75.        }
76.    }
 
Odgovor na temu

sanchi
Sanja Jokic
Beograd

Član broj: 148256
Poruke: 104
194.106.184.*



+8 Profil

icon Re: IRCServer problem12.06.2007. u 00:39 - pre 205 meseci
A koji deo te konkretno zanima?
- kako da dobiješ IP adrese
- kako da ih program "zapamti"
- kako da se ti podaci kriptuju (ako si pod šiframa mislio na to).

I jel planiraš da loguješ sa adresama i sesije, odnosno šta si tačno želeo sa tim adresama posle?
If people were meant to pop out of beds we would all sleep in toasters.
Google is your friend http://justfuckinggoogleit.com/
 
Odgovor na temu

makari

Član broj: 77649
Poruke: 12
*.PPPoE-2135.sa.bih.net.ba.



Profil

icon Re: IRCServer problem12.06.2007. u 13:01 - pre 205 meseci
pa potrebno mi je samo da pamti ip adrese pod siframa.
 
Odgovor na temu

leka
Dejan Lekić
senior software engineer, 3Developers
Ltd.
London, UK

Član broj: 234
Poruke: 2534
*.paws.umds.ac.uk.

Sajt: dejan.lekic.org


+2 Profil

icon Re: IRCServer problem13.06.2007. u 15:53 - pre 205 meseci
1) Pitanje uopste nije razumno.
2) IP adrese se MORAJU znati za bilo kakvu komunikaciju na Internetu, tako da bilo kakvo skrivanje IP adresa nema smisla, osim ako ne zelis da dajes informaciju klijentima o IP adresama drugih klijenata.

Ja pretpostavljam da ti zelis ovo pod #2. Zelis da zastitis klijente tako da drugi klijenti ne mogu da znaju IP drugih klijenata... Ako pises sopstveni chat sistem, onda je to jaaaaako jednostavno - prosto ne dajes IP informacije klijentima! :)
Primer: MisterNo salje poruku TheWitch. Njegov klijent salje (recimo, moze i neki XML, kako vec volis) string tipa:
"Receiver: TheWitch, Msg: Cao, ovo je privatna poruka". Server zna od koga je dobio ovaj string, i kome treba da prosledi poruku, tako da TheWitch klijent prima string tipa: "From: MisterNo, Msg: Cao, ovo je privatna poruka".

Ako pises IRC server, a ne izgleda mi da ga pises gledajuci tvoj JAVA kod, onda je situacija malkice komplikovanija. Ne puno, samo malo. Server treba, kad god se neki klijent konektuje, da odradi digest (ili neki in-house sistem za kriptovanje) od IP-a i kad god drugi klijenti treba (prema IRC protokolu) da vide IP, tvoj server im da nesto tipa: NickName!username@<digest IPa> . Server u bazu stavlja digest, IP, nickname tako da uvek zna kojem niku odgovara koji digest. Predlazem SHA1 jer je to trenutno jedan od najsnaznijih digest algoritama.

Interesantno je, a to poznavaoci IRC protokola dobro znaju, da je IP informacija na IRCu jedino vazna kada postoje neki filteri za kanal (filteri za upad u kanal, kao i filtri za banovane korisnike), tako da zamena IPa sa digest-om drasticno otezava banovanje korisnika. Recimo, posto nemas IP, vec neku gomilu karaktera, ne mozes prosto da kazes nesto tipa: /ban *!*@*.bg.ac.yu , vec moras da banujes svakog zasebno. Dakle ovaj sistem je poprilicno los iz perspektive administratora IRC servera ili mreze.

Alternativa je da napises in-house kriptografski sistem, koji je mnogo manje siguran, ali koji bi dao mogucnost filtriranja.

Kao dugogodisnji IRC administrator (mada se time vise ne bavim) mogu samo da kazem da je skrivanje IPa besmisleno, jer se IP moze naci na ovaj ili onaj nacin, tako da toplo preporucujem da, ako pises IRC server, odustanes od ove ideje.
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
 
Odgovor na temu

[es] :: Java :: IRCServer problem

[ Pregleda: 2880 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

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