Advertisement
heavenriver

PeerNAPSTER.java

Dec 11th, 2013
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.25 KB | None | 0 0
  1. import java.io.*;
  2. import java.net.*;
  3. import java.util.*;
  4.  
  5. public class PeerNAPSTER
  6.     {
  7.     public static void main(String[] args) throws Exception
  8.         {
  9.         switch(args[0])
  10.             {
  11.             case "client": search(); break;
  12.             case "server": download(); break;
  13.             default: break;
  14.             }
  15.         }
  16.    
  17.     /* client mode: searches for a file */
  18.     static void search()
  19.         {
  20.         /* connection to server */
  21.         Socket clientSocket = new Socket("serverID", 4445);
  22.        
  23.         /* opening buffers */
  24.         BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
  25.         BufferedReader inputStream = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
  26.         DataOutputStream outputStream = new DataOutputStream(clientSocket.getOutputStream());
  27.        
  28.         /* search */
  29.         in.readLine(); // the first line is the mode: "client" or "server", and should be skipped
  30.         String user = in.readLine();
  31.         String pwd = in.readLine();
  32.         String searchID = in.readLine();
  33.         byte[] data;
  34.         /* converts user, pwd, and searchID into a packet to be sent to the server */
  35.         outputStream.writeBytes(data);
  36.        
  37.         /* reads result from server */
  38.         String result = inputStream.readLine();
  39.         /* processes result; it contains the IP of the peer that has the file which we call "String IP" */
  40.         /* connects to peer */
  41.         InetAddress IPAddress = InetAddress.getByName(IP);
  42.         Socket peerSocket = new Socket(IPAddress, 4446);
  43.         /* repeats the same steps used to connect to the server, except that with peers user and pwd are not needed */
  44.         peerSocket.close();
  45.        
  46.         clientSocket.close();
  47.         }
  48.    
  49.     /* server mode: provides a file to the peer requesting it */
  50.     static void download()
  51.         {
  52.         /* opening connection */
  53.         ServerSocket serverSocket = new ServerSocket(4445);
  54.        
  55.         while(true)
  56.             {
  57.             Socket clientSocket = serverSocket.accept();
  58.            
  59.             /* opening buffers */
  60.             BufferedReader inputStream = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
  61.             DataOutputStream outputStream = new DataOutputStream(clientSocket.getOutputStream());
  62.            
  63.             String clientInput = inputStream.readLine();
  64.             /* processes the request sent by the client and packs the data into a "byte[] data" */
  65.             outputStream.writeBytes(data);
  66.            
  67.             clientSocket.close();
  68.             }
  69.        
  70.         serverSocket.close();
  71.         }
  72.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement