kha
Google is your best friend
Messages : 1 235 Inscrit le 01/03/02
Ville : Montreal
Non connecté
|
|
Posté le 03 janvier 2006 - 00 h 51 m 24 s |
|
|
Reprise du message précédent : 1. // prout
2. import java.io.IOException;
3. import java.net.ServerSocket;
4. import java.net.Socket;
5. import java.text.DateFormat;
6. import java.text.SimpleDateFormat;
7. import java.util.ArrayList;
8. import java.util.Collections;
9. import java.util.Date;
10. import java.util.Iterator;
11. import java.util.List;
12.
13. public final class Forwarder implements Runnable
14. {
15. private final List clients;
16. private final ServerSocket server;
17. private final Socket remote;
18. private Thread runner;
19.
20. public Forwarder(String remoteHost, int remotePort, int localPort) throws IOException
21. {
22. clients = Collections.synchronizedList(new ArrayList());
23. System.out.println("[Forwarder] Creating forwarding server...");
24. server = new ServerSocket(localPort);
25. System.out.println("[Forwarder] Connecting to remote host...");
26. remote = new Socket(remoteHost, remotePort);
27. }
28.
29. public void start()
30. {
31. if (runner == null)
32. {
33. System.out.println("[Forwarder] Starting forwarding process...");
34. runner = new Thread(this, "ForwarderThread");
35. runner.start();
36.
37. System.out.println("[Forwarder] Forwarding data from remote host to clients...");
38. try
39. {
40. byte b[] = new byte[4096];
41. int c;
42. while ((c = remote.getInputStream().read(b)) != -1)
43. {
44. for (Iterator i = clients.iterator(); i.hasNext();)
45. {
46. ForwarderClient client = (ForwarderClient) i.next();
47. client.getClient().getOutputStream().write(b, 0, c);
48. }
49. }
50. server.close();
51. remote.close();
52. }
53. catch (IOException e)
54. {
55. e.printStackTrace();
56. }
57. }
58. }
59.
60. public void run()
61. {
62. while(runner != null && server.isBound() && !server.isClosed())
63. {
64. try
65. {
66. System.out.println("[ForwarderThread] Forwarder is listening for clients to connect...");
67. clients.add(new ForwarderClient(server.accept()));
68. }
69. catch (IOException e)
70. {
71. e.printStackTrace();
72. }
73. }
74. }
75.
76. private final class ForwarderClient implements Runnable
77. {
78. private final Socket client;
79.
80. private ForwarderClient(Socket client)
81. {
82. this.client = client;
83. String name = "ForwarderClientThread (" + client.getInetAddress().getHostName() + ":" + client.getPort() + ")";
84. System.out.println("[ForwarderClient] New " + name);
85. new Thread(this, name).start();
86. }
87.
88. public void run()
89. {
90. try
91. {
92. byte b[] = new byte[4096];
93. int c;
94. System.out.println("[" + Thread.currentThread().getName() + "] Receiving data from client...");
95. while ((c = client.getInputStream().read(b)) != -1)
96. {
97. remote.getOutputStream().write(b, 0, c);
98. }
99. }
100. catch (IOException e)
101. {
102. System.out.println("[" + Thread.currentThread().getName() + "] Disconnected...");
103. }
104. try
105. {
106. client.close();
107. }
108. catch (IOException e)
109. {
110. e.printStackTrace();
111. }
112. clients.remove(this);
113. }
114.
115. public final Socket getClient()
116. {
117. return client;
118. }
119. }
120.
121. // EXAMPLE OF USE
122. // 1. Start this program
123. // 2. Start several Telnet to localhost
124. public static void main(String[] args) throws IOException
125. {
126. // Start a fake a remote iterative server on port 1111. You can connect with telnet localhost 1111 to test what it does
127.
128. new Thread(new Runnable()
129. {
130. public void run()
131. {
132. boolean active = true;
133. try
134. {
135. final DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss \r\n");
136. final ServerSocket ss = new ServerSocket(1111);
137. System.out.println("[FakeServerThread] FAKE SERVER STARTED !");
138. final Socket s = ss.accept();
139. byte b[] = new byte[4096];
140. while (active)
141. {
142. int i = s.getInputStream().read(b);
143. System.out.println("[FakeServerThread] Received from the forwarder: " + new String(b, 0, i - 1));
144. s.getOutputStream().write(df.format(new Date()).getBytes());
145. Thread.sleep(1000);
146. }
147. s.close();
148. ss.close();
149. }
150. catch (IOException e)
151. {
152. active = false;
153. }
154. catch (InterruptedException e)
155. {
156. e.printStackTrace();
157. }
158. }
159. }, "FakeServerThread").start();
160.
161. // Connect to the fake remote server
162.
163. new Forwarder("localhost", 1111, 23).start();
164. }
165. }
166.
|
|
| |
|
Florent42
Eh oui cette ville existe...;)
Messages : 2 459 Inscrit le 14/12/03
Ville : Saint-Etienne uniquement(pas de voiture)
Non connecté
|
|
Posté le 03 janvier 2006 - 18 h 41 m 42 s |
|
|
merci pour tes explications!
j etais effectivement a cote de la plaque...
merci pour le code,mais c bizarre j arrive bien a l executer sans problème, mais si d'après l exemple je fait un telnet localhost 1111 ben ca fait rien au niveau de eclipse
|
|
| |
- je cherche un emploi
ICI
|
Florent42
Eh oui cette ville existe...;)
Messages : 2 459 Inscrit le 14/12/03
Ville : Saint-Etienne uniquement(pas de voiture)
Non connecté
|
|
Posté le 03 janvier 2006 - 18 h 47 m 42 s |
|
|
je corrige:
qd j ecris via un telnet localhost, je vois bien des données passer dans eclipse
par contre rien sur le port 1111
|
|
| |
- je cherche un emploi
ICI
|
Florent42
Eh oui cette ville existe...;)
Messages : 2 459 Inscrit le 14/12/03
Ville : Saint-Etienne uniquement(pas de voiture)
Non connecté
|
|
Posté le 13 janvier 2006 - 18 h 39 m 20 s |
|
|
|
|
|
| |
- je cherche un emploi
ICI
|
kha
Google is your best friend
Messages : 1 235 Inscrit le 01/03/02
Ville : Montreal
Non connecté
|
|
Posté le 14 janvier 2006 - 01 h 09 m 06 s |
|
|
tu fais qq chose de pas corect. ca marche bien chez moi. essaie de comprendre le code.
|
|
| |
|
Florent42
Eh oui cette ville existe...;)
Messages : 2 459 Inscrit le 14/12/03
Ville : Saint-Etienne uniquement(pas de voiture)
Non connecté
|
|
Posté le 21 janvier 2006 - 11 h 55 m 41 s |
|
|
en essayant de comprendre le code:
j envoi des données sur le port 23
le programme le recupère et les réenvoi sur le port 1111
et voila ce que ca donne:
|
|
| |
- je cherche un emploi
ICI
|
Florent42
Eh oui cette ville existe...;)
Messages : 2 459 Inscrit le 14/12/03
Ville : Saint-Etienne uniquement(pas de voiture)
Non connecté
|
|
Posté le 21 janvier 2006 - 12 h 01 m 18 s |
|
|
avec :
en haut a droite: le programme
en haut a gauche: le telnet localhost 23
en bas a droite: le telnet localhost 1111
|
|
| |
- je cherche un emploi
ICI
|
kha
Google is your best friend
Messages : 1 235 Inscrit le 01/03/02
Ville : Montreal
Non connecté
|
|
Posté le 22 janvier 2006 - 17 h 49 m 16 s |
|
|
T as pas compris !!!
Tu as lu mes commentairesen vert ??
// Start a fake a remote iterative server on port 1111. You can connect with telnet localhost 1111 to test what it does
Le main sert a TESTER ma classe. Pour la tester il faut que je simule un serveur !!! En gros ca correspond a ton serveur a toi !!!
j ai ecris que c est un serveur ITERATIF ! Donc s'il est pas parallele, comment veut tu qu il accepte plus d'une connexion en meme temps !
Voila comment ca fonctionne :
1. Le serveur fake se lance (en gros c est comme si tu avais un serveur iteratif chez toi)
2. Le forwarder se connecte au serveur iteratif et ecoute sur un port de ton pc, 23 en l'occurence. Comme le forwarder est en mode paralelle, lui au moins peu accepter plusieurs clients !!!
3. Lance plusieurs telnet sur localhost port 23 pour verifier !!!
|
|
| |
|
kha
Google is your best friend
Messages : 1 235 Inscrit le 01/03/02
Ville : Montreal
Non connecté
|
|
Posté le 22 janvier 2006 - 17 h 51 m 06 s |
|
|
Si tu veux utiliser mon code, il faut que tu te cree une classe java avec un main et que tu utilise :
new Forwarder("localhost", 1111, 23).start();
localhost est l'addresse du serveur iteratif, 1111 le port de ce serveur et 23 le port sur lequel tu veux ecouter plusieurs client.
=> En gros c'est un code qui te permet de transformer un serveur iteractif qui n'accepte qu'un seul client en un serveur paralelle qui accepte plsuieurs clients a la fois SUR LE MEME PORT
|
|
| |
|
Florent42
Eh oui cette ville existe...;)
Messages : 2 459 Inscrit le 14/12/03
Ville : Saint-Etienne uniquement(pas de voiture)
Non connecté
|
|
Posté le 07 mars 2006 - 22 h 08 m 09 s |
|
|
j ai compris ca marche!!
merci kha!
|
|
| |
- je cherche un emploi
ICI
|
Florent42
Eh oui cette ville existe...;)
Messages : 2 459 Inscrit le 14/12/03
Ville : Saint-Etienne uniquement(pas de voiture)
Non connecté
|
|
Posté le 07 mars 2006 - 22 h 35 m 13 s |
|
|
un petite question sur ton code initial.
j ai trouve un code sur internet ce code la:
1. Properties sys = System.getProperties();
2. String os = sys.getProperty("os.name");
3. Runtime r = Runtime.getRuntime();
4. try {
5. if (os.endsWith("NT")||os.endsWith("2000")||os.endsWith("XP"))
6. r.exec("cmd /c start http://192.168.1.2/");
7. else
8. r.exec("start http://serveur/");
9. } catch (IOException ex) {
10. ex.printStackTrace();
11. }
comment recuperer des donnees (genre number et caller par exemple) et les envoyer en argument dans l'url genre:
http://192.168.1.2/essai.php?number=05656767&caller=687
j ai essaye de trouver mais sans resultat...
|
|
| |
- je cherche un emploi
ICI
|
Florent42
Eh oui cette ville existe...;)
Messages : 2 459 Inscrit le 14/12/03
Ville : Saint-Etienne uniquement(pas de voiture)
Non connecté
|
|
Posté le 08 mars 2006 - 12 h 48 m 02 s |
|
|
je retire ce que j'ai dit ca marche bien
grace a ton code kha, (en le modifiant un peu) je peux faire de la remontée de fiche avec notre intranet
attendre et voir maintenant si c est correct en utilisation intensive
|
|
| |
- je cherche un emploi
ICI
|