Salut,

Je suis confronté à un petit souci qui me prends bien le chou.

Je suis en train de développer en java un client et un serveur qui communiquent par socket.


Lorsque j'effectue un test entre mon client et serveur sous eclipse,j'arrive à échanger. (ok)

Lorsque j'effectue un test entre mon serveur et d'autres clients que j'ai développé il y a quelque temps (en C++ et en C#), la communication ne fonctionne pas.
(Je précise que mes clients fonctionnent correctement)
Le serveur ne reçoit le message que quand je ferme le client...

J'en déduis donc qu'il y a un problème au niveau de mon serveur (magnifique sens de la déduction )

Voici le code de mon serveur :

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
 
public class SockServer extends Thread {
 
	final static int port = 80;
	private Socket socket;
	private String chaineAenvoyer = "";
	private boolean sortie = false;
 
	public static void main(String[] args) {
		try {
				ServerSocket socketServeur = new ServerSocket(port);
				System.out.println("Lancement du serveur");
				while (true) {
					Socket socketClient = socketServeur.accept();
					SockServer t = new SockServer(socketClient);
					t.start();
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
 
		public SockServer(Socket socket) {
			this.socket = socket;
		}
 
		public void run() {
			traitements();
		}
 
		public void traitements() {
			try {
				String message = "";
				System.out.println("Connexion avec le client : " + socket.getInetAddress());
 
				BufferedReader entree = new BufferedReader(new InputStreamReader(socket.getInputStream()));
				PrintStream fluxSortie = new PrintStream(socket.getOutputStream());
 
				message = entree.readLine();
				System.out.println(message);
 
				if(chaineAenvoyer.equals(""))
				{
					System.out.println("Saisir la chaine à envoyer au Client... :");
					//attente de saisi d'un message
					while(sortie == false)
					{
						Scanner sc = new Scanner(System.in);
						String str = sc.nextLine();
						chaineAenvoyer = str;
						sortie = true;
					}
				}
 
				fluxSortie.println(chaineAenvoyer);
				socket.close();
			} 
			catch (Exception e) {
				e.printStackTrace();
			}
		}
}
Avez-vous une idée de ce qui pourrait bloquer la réception du message ?

D'avance merci,

Nicolas