Bonsoir, j'ai lus quelque tutoriel hier pour m'initier au langage java, et j'ai décidé d'essayer de faire un petit server.
Sachant que je suis derrière un routeur, j'ai deux pc le premier (le server) avec l'ip 192.168.30.10 et le deuxième pc2 avec 192.168.30.11.
Dabors, si je ne désactive pas les firewalls sur les deux pc je ne peux pas me connecté, je voudrai savoir comment font les application comme msn, les jeux ... pour évité se problème.
ensuite même en désactivant les firewalls je n'arrive pas a accédé au server par l'ip public (pas celle du réseau celle d'internet).
en gros je voudrait connaitre la procédure a suivre pour qu'on puisse se connecté sur mon server de l'extérieur et ne pas se soucier du firewalls.
merci.
voici mon code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118 package reseau.server; import java.net.*; import java.io.*; import java.util.Vector; /** * * @author amine */ public class Server { protected static Server instance; /** * socket du server */ protected ServerSocket socket; /** * port du server */ protected static int port = 25; /** * tableau des sockets clients connectés au server (thread safe). */ protected final Vector<Socket> clients = new Vector<Socket>(); /** * constructeur privé crée la socket su server. */ protected Server() { try { socket = new ServerSocket(port); System.out.println("Server lancer avec succes sur le port " + port); System.out.println("A l'addresse " + socket.getInetAddress().getHostAddress()); } catch (IOException e) { System.err.println("Erreur lors de la création de la socket " + e.getMessage()); } } public static synchronized Server getInstance() { if (instance == null) { instance = new Server(); } return instance; } public static void setPort(int port) { Server.port = port; } public void close() { try { for (Socket s : this.clients) { s.close(); } socket.close(); } catch(IOException e) { System.err.println("Erreur lors de la fermeture du server " + e.getMessage()); } } /** * ajouter le socket d'un client connecté. * @param socket s */ public void addClient(Socket s) { clients.add(s); } /** * ferme la connexion du socket (si elle n'est pas deja fermé) * puis l'enlève de la liste des clients. * @param socket s */ public void deleteClient(Socket s) { clients.remove(s); try { s.close(); } catch (IOException e) { System.err.println("Erreur lors de la supression du socket d'un client" + e.getMessage()); } } /** * Met le server en attente du demande de connexion. * enregistrer la socket une fois la connexion établie. * methode bloquante a lancer dans un thread appart. * @return socket d'un client connecté * @throws java.io.IOException */ public Socket listen() throws IOException { System.out.println("Le server est en attente d'une connextion"); Socket s = socket.accept(); System.out.println("Connexion établie avec " + s.getInetAddress()); return s; } public static void main(String[] args) { if ( args.length > 0 ) Server.setPort(new Integer(args[0])); Server server = Server.getInstance(); try { new ServerThread(server.listen()); } catch (IOException e) { System.err.println(e.getCause()); System.err.println(e.getMessage()); } } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88 /* * Objet pilotant la classe server, gérant la liaisant entre un client et le server * dans un thread a part. */ package reseau.server; import java.io.IOException; import java.net.*; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; /** * * @author ordi */ public class ServerThread extends Thread { /** * le server (singleton) */ protected Server server; /** * la socket du client */ protected Socket ssClient; /** * BufferedWriter objet qui sert a l'envoie de données */ protected BufferedWriter out; /** * BufferedReader objet qui sert a la reception de données */ protected BufferedReader in; /** * constructeur: initialise le nom du thread, socket, reader, writer... * puis lance le thread * @param ss socket du client */ public ServerThread (Socket ss) throws IOException { super(ss.getInetAddress().toString()); server = Server.getInstance(); ssClient = ss; out = new BufferedWriter( new OutputStreamWriter(ss.getOutputStream()) ); in = new BufferedReader( new InputStreamReader(ss.getInputStream()) ); server.addClient(ss); start(); new ServerThread(server.listen()); } @Override public void run () { String l; try { send("Hello :)"); while (!(l = in.readLine()).equals("quit")) { System.out.println(l); } //on netoie avant d'arreter le thread in.close(); out.close(); server.deleteClient(ssClient); ssClient.close(); } catch (IOException e) { } } protected void send(String s) throws IOException{ out.write(s + "\n\r"); out.flush(); } }
Partager