kha
Google is your best friend
Messages : 1 235 Inscrit le 01/03/02
Ville : Montreal
Non connecté
|
|
Posté le 04 août 2005 - 00 h 28 m 02 s |
|
|
Reprise du message précédent :
ya moyen que tu nosu donnes un example de ce qui sort du port 2060 ?
Est ce que c est un stream tcp de bits ou alors ce sont des lignes, chaque ligne etant uen trame ?
|
|
| |
|
kha
Google is your best friend
Messages : 1 235 Inscrit le 01/03/02
Ville : Montreal
Non connecté
|
|
Posté le 04 août 2005 - 01 h 24 m 20 s |
|
|
1.
2. import java.io.BufferedOutputStream;
3. import java.io.BufferedReader;
4. import java.io.IOException;
5. import java.io.InputStreamReader;
6. import java.io.PrintWriter;
7. import java.net.InetAddress;
8. import java.net.Socket;
9. import java.net.UnknownHostException;
10. import java.util.LinkedList;
11. import java.util.List;
12.
13. public final class SocketTest implements Runnable
14. {
15. private final InetAddress address;
16. private final short port;
17.
18. private Socket socket;
19. private BufferedReader in;
20. private PrintWriter out;
21.
22. private Thread runner;
23. private List list;
24.
25. private SocketTest(final List list, final String host, final String port) throws UnknownHostException
26. {
27. System.out.println("[DEBUG] new SocketTest");
28.
29. this.address = InetAddress.getByName(host);
30. this.port = Short.parseShort(port);
31. this.list = list;
32. }
33.
34. public void feed() throws IOException
35. {
36. System.out.println("[DEBUG] feed");
37.
38. socket = new Socket(this.address, this.port);
39. in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
40. out = new PrintWriter(new BufferedOutputStream(socket.getOutputStream()), true);
41.
42. runner = new Thread(this);
43. runner.setName("SocketTestThread");
44. runner.start();
45. }
46.
47. public void stop()
48. {
49. if (runner != null)
50. {
51. System.out.println("[DEBUG] stop");
52.
53. runner = null;
54.
55. try
56. {
57. socket.close();
58. }
59. catch (final IOException e)
60. {
61. e.printStackTrace();
62. }
63. }
64. }
65.
66. /**
67. * @see java.lang.Runnable#run()
68. */
69. public void run()
70. {
71. System.out.println("[DEBUG] run");
72.
73. out.println("GET");
74. String line;
75.
76. try
77. {
78. while (runner != null && (line = in.readLine()) != null)
79. {
80. System.out.println("[DEBUG] Got line: " + line);
81.
82. synchronized (list)
83. {
84. list.add(line.substring(3, 5));
85. list.notifyAll();
86. }
87. }
88. }
89. catch (final IOException e)
90. {
91. e.printStackTrace();
92. }
93. finally
94. {
95. stop();
96. }
97. }
98.
99. public static void main(String[] args) throws IOException, InterruptedException
100. {
101. if (args.length < 2)
102. {
103. printUsage();
104. System.exit(1);
105. }
106.
107. final List list = new LinkedList();
108.
109. new SocketTest(list, args[0], args[1]).feed();
110.
111. while (true)
112. {
113. String line;
114.
115. synchronized (list)
116. {
117. while (list.isEmpty())
118. {
119. list.wait();
120. }
121.
122. line = (String) list.remove(0);
123. }
124.
125. if (line != null)
126. {
127. process(line);
128. }
129. }
130. }
131.
132. private static void printUsage()
133. {
134. System.out.println("Usage: SocketTest <host> <port>");
135. }
136.
137. private static void process(final String line)
138. {
139. System.out.println("[DEBUG] Processing line: " + line);
140.
141. // enter yoru code here
142. }
143. }
|
|
| |
|
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 04 août 2005 - 08 h 33 m 43 s |
|
|
ou la la kha...complique tout ca!
peux tu m expliquer un peu parce que j ai un peu de mal...
voila normalement ce qu on devrait récuperer:
|
|
| |
Message édité 3 fois, la dernière par Florent42 le 05 août 2005 - 13 h 54. |
| |
- 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 04 août 2005 - 16 h 06 m 01 s |
|
|
Genial ta sortie !
Je modifie le prog des que j ai du temps.
Ce que j ai poste c est un programme assez generique : tu a un thread qui recupere d un socket des donnees et ls met dans une queue.
Ensuite, le pogramme principal tourne en boucle et fait un wait sur la queue : des qu une entree arrive, il la traite.
L avantage d une queue c est que le traitement en java que tu dois faire (se connecter a une page web je crois ?) risque e prendre + de temps que la recuperation des donnees.
=> Cela te permet de mettre tes donnes dans une queue (tu peux fixer une limite a ta queue) et les traiter de facon asynchrone. La recuperation des donnees peut etre tres rapdie alors que leur traitement peut atre plus lent.
Le seul probeme, c est que si le traitement est trop long et la recuperation trop rapide, ta queue va grossir (hum.. aucune autre allusion pour cette phrase;) ).
=> prevoir un mecanisme pour eviter cette situation.
Mais si ton traitement est aussi rapide que la recuperation des trames, tu n a pas besoin de tout cas.
Je te ferais 2 versions qd j aurai le temps : avec queue et sans queue.
|
|
| |
|
gege38
Modérateur
Chief of the (¯`·.__[T3aM.BouL3T©]__.·´¯) Potatoe Reloaded
Messages : 14 097 Inscrit le 05/02/03
Ville : Domène
Non connecté
|
|
Posté le 04 août 2005 - 16 h 46 m 29 s |
|
|
Je pense qu'une solution à base de file d'attente est correcte...
Si la taille de la file est suffisamment grosse, et si les envois ne sont qu'à intervalles réguliers, la file se videra au fur et à mesure
Une solution à envisager pour une file d'attente presque pleine : sérialiser la file et en ouvrir une autre (en espérant qu'un jour on ait le temps de traiter la première file)...
Mais bon, là, on touche à Euler et Markov...
|
|
| |
" Nous plaisons plus souvent dans le commerce de la vie par nos défauts que par nos qualités. "
--La Rochefoucauld
|
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 04 août 2005 - 17 h 08 m 33 s |
|
|
le petit soucis c que la sortie que j obtiens est indicative, pour cela j utilise un logiciel qui est prevu pour ca mais qui se connecte aussi sur le port 2060 de la meme facon. Après je ne sais pas si lui, deja il traite les informations pour les affichicher comme l image ci dessus.
De plus j ai un autre soucis: dans l immediat j ignore aussi la commande (si il y a une commande) pour demander au serveur distant de vider son buffer...
comme vous le voyez j ai encore bcp d inconnues et pour l instant pas de reponses ....
|
|
| |
- je cherche un emploi
ICI
|
gege38
Modérateur
Chief of the (¯`·.__[T3aM.BouL3T©]__.·´¯) Potatoe Reloaded
Messages : 14 097 Inscrit le 05/02/03
Ville : Domène
Non connecté
|
|
Posté le 04 août 2005 - 17 h 18 m 20 s |
|
|
Le 04 août 2005 - 17 h 08, Florent42 a écrit :
le petit soucis c que la sortie que j obtiens est indicative, pour cela j utilise un logiciel qui est prevu pour ca mais qui se connecte aussi sur le port 2060 de la meme facon. Après je ne sais pas si lui, deja il traite les informations pour les affichicher comme l image ci dessus.
|
Ben, on peut supposer que les trames arrivent en bursts alors (par saccades  )
De plus j ai un autre soucis: dans l immediat j ignore aussi la commande (si il y a une commande) pour demander au serveur distant de vider son buffer...
comme vous le voyez j ai encore bcp d inconnues et pour l instant pas de reponses ....
|
Ben, pour le buffer, suffit de regarder sa taille à chaque ajout (c'est pas ça qui prend de la ressource) et de déclencher la sérialisation si ca dépasse la limite...
|
|
| |
" Nous plaisons plus souvent dans le commerce de la vie par nos défauts que par nos qualités. "
--La Rochefoucauld
|
kha
Google is your best friend
Messages : 1 235 Inscrit le 01/03/02
Ville : Montreal
Non connecté
|
|
Posté le 04 août 2005 - 18 h 21 m 50 s |
|
|
Pour resoudre le premier probleme, il te suffit de telecharger netcat (n utilise pas telnet car il envoit des donnees non sollicitees).
Netcat permet de faire des communications sockets cleint / serveur de base, c est a dire que ce que tu vois est uniquement ce qui st envoye et tu envoie uniquement ce que tu decide d envoyer via ce logiciel.
telecharge le a : http://www.vulnwatch.org/netcat/
Et lance le comme ca :
nc -v <ip> <port>
il va e connecter au serveur. Et voit ce qui se passe. Si rien ne se passe, tape ton GET et fait entree.
|
|
| |
|
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 05 août 2005 - 13 h 55 m 14 s |
|
|
voila avec netcat ce que ca me donne:
|
|
| |
- 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 05 août 2005 - 15 h 16 m 09 s |
|
|
Sinon essaie de rajouter l option -n pour dire que c est une adresse ip et non un hostname. Comme ca nc ne fait pas la resolution de nom (c est ca qui plante).
Sinon, Tu es sur que si tu fait un ping 192.168.1.251 ca repond ?
Essaie aussi avec nc de scanner ce PC :
nc -v -z 192.168.1.251 2060
nc -v -z -u 192.168.1.251 2060
Ca te ira si c est un port TCP ou UDP au moins. Personnellement, si j etais le programme qui envoie les trames, j utiliserai de l UDP si ce n est pas critique comem information.
|
|
| |
|
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 05 août 2005 - 15 h 22 m 43 s |
|
|
meme pb si je mets -n en plus (la premiere ligne au niveau du inverse host lookup failed disparait) mais il reste la 2 eme qui me refuse la connexion.
le ping marche parfaitement
nc -v -z -u -n par contre provoque l ouverture du port, visiblement j arrive a me connecter...mais rien de plus aucune trame n arrive pour autant.
|
|
| |
- 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 05 août 2005 - 16 h 54 m 31 s |
|
|
Si nc -v -z -u -n, ca veut dire que le port 2060 fonctionne sur l UDP (option -u). C est donc bien ce que je pensais : tu va devoir ecouter sur le port UDP 2060 et non TCP 2060, et le systeme de queue va te servir car l UDP est bien plus rapide que le tcp et ce n est pas un mode de communication connecte.
essaie avce nc de faire :
nc -v -u -n 192.168.1.251 2060
ca va se connecter sur le pot UDP et ca va pas fermer le socket => tu va pouvori vori ce qu ise passe et envoyer des donnees, comme un GET par exemple.
|
|
| |
|
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 05 août 2005 - 18 h 16 m 40 s |
|
|
j ai essaye
malheureusement la commande GET est non connue par le systeme(invalide port GET en tappant nc -v -n -z -u 192.168.1.251 2060 GET
si je te tappe la commande:
nc -v -n -z -u 192.168.1.251 2060
il me repond que le port est ouvert (ca ca change pas) mais il me redonne l invite de commande ms dos normal (c:/program files/netcat/)
il doit en exister une autre qui provoque le vidage du buffer...
|
|
| |
Message édité 1 fois, la dernière par Florent42 le 05 août 2005 - 18 h 21. |
| |
- 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 05 août 2005 - 18 h 33 m 33 s |
|
|
Oui. En tout cas on a avance : tu peux te connecter su l ip et le port UDP 2060. Maintenant il faut juste trouver quelle comande envoyer pour dire au systeme d envoyer ses donnees.
Sinon, est ce qu il se peut que l envoi des donnees ne soit pas provoque par un GET ou une commande, mais qu il soit automatique, des qu une donnee doit etre envoyee dans le fond ? C est en general pour ca qu on utilise udp...
Si le serveur n attends pas de commande, c est qu il doit envoyer de temps en temps des trames, quand il le faut, et les clients connectes sur son port UDP recoivent.
Ce que tu peut faire :
1. lancer : nc -v -u -n 192.168.1.251 2060 (NC1) : se connecter au serveur
2. lancer : nc -v -u -l -p 2060 (NC2) : ca cree un serveur qui ecoute sur le port UDP 2060 de ton PC
3. lancer l autre programme (P1) qui t affiche la sortie formatee que tu as poste en image, pour en afficher d autres.
4. Regarde dans NC1 si tu vois qq chose
5. Dis au programme P1 de se connecter sur le port 2060 de ton PC pour recupere les donnes, au lieu de se connecter sur le serveur. Comme ca. le programme va se connecter sur netcat mis en mode serveur.
6. Dis a ton programme de recupere les donnes : s il envoie une commande, tu la verra s afficher dans la fenetre NC2.
S il ne se passe rien, essaie d ecrire a la main des infos dans NC2 : ces infos vont etre envoyees aux programmes conne a ton PC, donc tu verras s il reagit.
|
|
| |
|
kha
Google is your best friend
Messages : 1 235 Inscrit le 01/03/02
Ville : Montreal
Non connecté
|
|
Posté le 05 août 2005 - 18 h 35 m 24 s |
|
|
Le 05 août 2005 - 18 h 16, Florent42 a écrit :
j ai essaye
malheureusement la commande GET est non connue par le systeme(invalide port GET en tappant nc -v -n -z -u 192.168.1.251 2060 GET
si je te tappe la commande:
nc -v -n -z -u 192.168.1.251 2060
il me repond que le port est ouvert (ca ca change pas) mais il me redonne l invite de commande ms dos normal (c:/program files/netcat/)
il doit en exister une autre qui provoque le vidage du buffer...
|
NB : nc -v -n -z -u 192.168.1.251 2060 l option -z sert jsute a faire un scan !!!
il faut faire :
nc -v -n -u 192.168.1.251 2060
une fois conencte, tape GET et entree.
|
|
| |
|
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 05 août 2005 - 19 h 33 m 42 s |
|
|
effectivement ainsi je peux tapper mes commandes!
maintenant...je n ai plus qu savoir cette fichue commande (ce n est pas GET)....
|
|
| |
- 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 05 août 2005 - 20 h 15 m 55 s |
|
|
Pour ca regarde mon post plus haut : simule un serveur avec netcat et connecte l autre logiciel dessus et regarde ce qui se passe.
|
|
| |
|
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 06 août 2005 - 11 h 20 m 07 s |
|
|
dc j ai essaye mettre mon pc en serveur sur le port 2060 j ai lance netcat en mode serveur, pas de soucis il ecoute ce port.
Sur un autre ordi j ai lance a la fois la client netcat qui scrute le port 2060 de mon pc + le logiciel
mais la absolument rien ne se passe sur mon pc ou ailleurs
si j ecris des trucs sur mon pc, il n apparait rien non plus sur l autre ordi
il faut savoir que le materiel qui delivre les trames sur le port 2060 n est pas un ordinateur....mais un central telephonique
|
|
| |
- je cherche un emploi
ICI
|
iraysyvalo
-
Messages : 9 647 Inscrit le 19/11/02
Ville : Lyon
Non connecté
|
|
Posté le 06 août 2005 - 13 h 06 m 55 s |
|
|
Pour voir ce qui sort du port 2060, coupes tout ce qui peut ecouter ce port sur ton poste avant de lancer la commande suivante :
<! -- bullshit>
nc -l -u -p 2060
|
|
|
| |
Message édité 2 fois, la dernière par iraysyvalo le 06 août 2005 - 13 h 08. |
| |
Pour un ban rapide et garanti sur ce forum, argumentez vos posts, dites simplement la verite, parlez de la realite et les leche-culs d'un cote et les maniaques du ban de l'autre se feront un plaisir de vous envoyer au purgatoire aussi sec.
|
kha
Google is your best friend
Messages : 1 235 Inscrit le 01/03/02
Ville : Montreal
Non connecté
|
|
Posté le 06 août 2005 - 15 h 18 m 24 s |
|
|
Je pense que la il va falloir que tu regarde les spec techniques du central... Il doit y avoir une commande qui declenche l arrivee des trames, ou alors c est un appel qui arrive, dans ce cas il faudrait provoquer l appel pour essayer de recuperer qq chose dans netcat pour voir le format.
Sinon ya une solution alternative : tu sniffes ton reseau sur le port udp 2060...
|
|
| |
|
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 06 août 2005 - 17 h 00 m 36 s |
|
|
j ai l impression que le port 2060 du central est un peu planté! resultat je n ai plus rien qui passe sur le logiciel prevu a cet effet
je reussis pas a debloquer le port a distance, je regarderais ce pb que lundi....
|
|
| |
- je cherche un emploi
ICI
|