[ makari @ 11.06.2007. 22:18 ] @
| 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. }
|
[ sanchi @ 12.06.2007. 00:39 ] @
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?
[ makari @ 12.06.2007. 13:01 ] @
pa potrebno mi je samo da pamti ip adrese pod siframa.
[ leka @ 13.06.2007. 15:53 ] @
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.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.