Socket-SocketChannel compatible ?

Socket-SocketChannel compatible ? - Java - Programmation

Marsh Posté le 07-04-2005 à 09:37:39    

On a un léger pbl avec les SocketChannel ... :
On écrit un composant qui doit se connecter à un autre via une socket, vu qu'on utilise le jdk 1.4.2, on a utlisé les SocketChannel pour créer la connexion, alors qu'en face ils ont préférés restés en Socket simple.
 
Ca marche globalement bien, sauf qu'on a un problème :
les deux composants doivent s'échanger des trame de présence a intervalle régulier pour savoir si l'autre est la, en gros le client (nous) envoie une trame de presence au serveur, qui doit aussitot répondre pas sa trame de présence.
Pour valider la connexion, le meme échange doit se faire une seule fois juste après l'établissement de le connexion TCP. Ce premier échange marche bien.
Par contre, après la connexion validée, le serveur n'arrive jamais à lire la trame de présence qu'on lui envoie, (rien dans la stream?? le thread de lecture ne lit rien ??).
Les tests ont été fais avec du jdk 1.4.2 des deux cotés, windowsXP-linux RedHat linux-linux.
 
Quelques tests ont été fait avec des 'bouchons' et les gars qui développent le serveur parlent d'une incompatibilité Socket-SocketChannel, alors que sur notre plateforme de dev, tout marche très bien avec une appli sui simule le serveur.
 
Je n'ai rien vu dans la doc jdk qui explique ce probleme ....
 

Reply

Marsh Posté le 07-04-2005 à 09:37:39   

Reply

Marsh Posté le 07-04-2005 à 09:43:06    

celui qui souffle dans le tuyau, il utilise bien flush() pour souffler ?


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 07-04-2005 à 10:05:47    

oui

Reply

Marsh Posté le 07-04-2005 à 10:18:49    

je peux en savoir plus sur les symptômes ?


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 07-04-2005 à 11:08:15    

Ba c'est justement la le pbl, on arrive pas trop a en savoir plus :p
Que dire de plus ...
on fait la connexion TCP : on echange un jeu de trames bien précis pour valider le protocole, et ensuite le serveur nous envoie plein de données qu'on doit traiter.
Toutes les 30 secondes on doit envoyer la trame de presence et ils n'arrivent pas a la lire. Donc il ne nous envoie pas leur trame de présence et les deux systemes doivent considérer la connexion comme perdue et la couper.
 
Je vais regarder comment les SocketChannel gere les Socket...

Reply

Marsh Posté le 08-04-2005 à 09:18:40    

up

Reply

Marsh Posté le 08-04-2005 à 09:50:20    

on a pas assez de détail pour faire un dépannage (ça implique des threads, des trucs bloquants ou non etc.).  
Par contre, l'histoire de l'incompatibilité Socket/socketChannel est une fausse route, abandonne tout de suite.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 08-04-2005 à 11:17:32    

Ok, c'est ce que je voulais savoir.
 
Par contre, j'ai qd même trouvé ca
http://www-106.ibm.com/developerwo [...] =176#32882
 
Ca a deux ans, je sais pu non plus de quand date le 1.4.2, et on n'est pas sur non plus sur que ce soit a cause de l'incompatibilté par rapport a ce qu'il dit...
 
Comment tu peux etre sur que les SocketChannel et les Socket soient compatible ?
Parce que les SocketChannel utilisent des Socket?
Merci

Reply

Marsh Posté le 08-04-2005 à 11:29:39    

aurel a écrit :


Parce que les SocketChannel utilisent des Socket?


probablement dans un sens ou l'autre.


---------------
trainoo.com, c'est fini
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed