title: Video streaming through socket and playing from client
body: <p>I have two simple programmes, server and client, both at localhost. What I want to do is to streaming the video from the server to the client through socket and the client can play it by using filediscriptor of the socket. First I try to send some message and the client can receive it. After that I send a few bytes of the video from the server'sd card to the client. The client can receive those bytes but cannot play it. Anyone know how to solve the problem?</p>
  
  <p>Here is my server and client code snippets:</p>
  
  <p>Server:</p>
  
  <pre><code>        //Receive request from client.
       Socket client=serversocket.accept();
       System.out.println("accept");
  
       //Receive client message.
       BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));
       String str=in.readLine();
       System.out.println("read:"+str);
  
       //Send message to client.
       //PrintWriter out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(client.getOutputStream())),true);
       //out.println("server message");
       FileInputStream fis=new FileInputStream("/sdcard/toystory3.3gp");
       byte buffer[]=new byte[2000];
       fis.read(buffer,0,20);
       DataOutputStream out=new DataOutputStream(client.getOutputStream());
       out.write(buffer,0,20);
       in.close();
       out.close();
       client.close();
       System.out.println("close");
  </code></pre>
  
  <p>Client:</p>
  
  <pre><code> Socket socket=new Socket("127.0.0.1",4444);
   String message="Initial"+"\r\n";
   //Send message to server.
   PrintWriter out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
   out.println(message);
  
   //Receive message from server.
   BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream()));
   String msg=br.readLine();
   //ParcelFileDescriptor pfd=ParcelFileDescriptor.fromSocket(socket);
   //MediaPlayer m=new MediaPlayer();
   //m.setDataSource(pfd.getFileDescriptor());
   //m.prepare();
   //m.start();
  
   if(msg!=null)
   {
    System.out.println("Data received.");
    System.out.println(msg);
   }
   else
   {
    System.out.println("Data not received.");
   }
   out.close();
   br.close();
   socket.close();
  </code></pre>