2013-06-14 3 views
0

Je souhaite jouer avec les flux d'E/S et l'API de mise en réseau Java. J'ai un ordinateur portable et un PC sur mon réseau (je connais l'adresse IP de chacun de ces périphériques) qui se connecte via un routeur Netgear DG834. Comment pourrais-je configurer mon ordinateur portable en tant que «serveur» et mon PC en tant que «client» lorsque je joue avec des flux d'E/S réseau Java.?Configuration du serveur IO de mise en réseau Java

Merci!

Répondre

1

Vous êtes à la recherche de communication TCP simple à l'aide des prises. Jetez un oeil à ce tutoriel, il vous a tout de commencer: http://systembash.com/content/a-simple-java-tcp-server-and-tcp-client/

idée de base est d'avoir un serveur qui écoute à un certain port:

String clientSentence;   
String capitalizedSentence;   

//server listes at port number 
ServerSocket welcomeSocket = new ServerSocket(6789);   

//server is running forever... 
while(true) { 
    //... and is accepting connections 
    Socket connectionSocket = welcomeSocket.accept(); 

    //receives string messages ... 
    BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));    

    //... and sends messages 
    DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());    
    clientSentence = inFromClient.readLine();    
    System.out.println("Received: " + clientSentence);    
    capitalizedSentence = clientSentence.toUpperCase() + '\n';    
    outToClient.writeBytes(capitalizedSentence);   
} 

Et le client devrait ressembler à ceci:

String sentence= "this is a message"; 
String modifiedSentence; 

//client opens a socket 
Socket clientSocket = new Socket("localhost", 6789); 

DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream()); 
BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); 

//writes to the server 
outToServer.writeBytes(sentence + '\n'); 
modifiedSentence = inFromServer.readLine(); 

System.out.println("FROM SERVER: " + modifiedSentence); 

//communication is finished, close the connection 
clientSocket.close(); 
+0

Merci pour la réponse! très utile. Une autre question: Aurais-je besoin de configurer une convention de dénomination de fichier spécial sur le "serveur"? Ou s'agit-il simplement d'exécuter les deux scripts à partir d'un IDE tel que Eclipse sur le serveur et le client? Aussi pour "Localhost" aurais-je plutôt taper l'adresse IP de mon ordinateur portable sur mon réseau local tel que 192.168.0.3, cela fonctionnerait pour la ligne: Socket clientSocket = new Socket ("192.168.0.3", 6789) ; // Ouvrir la connexion à l'ordinateur portable sur le réseau local avec IP 192.168.0.3 (serveur) – user2318861

+0

Je ne comprends pas vraiment votre question. Mais cela peut s'exécuter sur le même ordinateur (c'est-à-dire localhost) ou sur des ordinateurs différents (alors vous fournissez une adresse IP, par exemple 192.168.0.3). Le numéro de port est un must tout le temps. – darijan

+0

Existe-t-il une convention spécifique de dénomination de dossier/fichier pour une application côté serveur java? Ou vous exécutez simplement le code côté serveur avec un IDE sur le serveur et il écoutera automatiquement le port donné pour toute entrée. Identique au client, exécutez simplement l'application via un IDE tel qu'Eclipse. – user2318861

0

Vous n'avez pas besoin de 2 PC pour cela. Vous pouvez le faire sur le même PC en configurant des processus Java pour écouter 2 ports différents.

1

Une grande partie de la mise en réseau Java est gérée avec Sockets. Le serveur est un ServerSocket. Le client est un Socket. Ils se connectent et se parlent. C'est là que vous devriez commencer, juste à la lecture de l'API Java à propos de ces objets.

http://docs.oracle.com/javase/7/docs/api/java/net/Socket.html