2017-01-11 1 views
0

, wenn ich den Server und den Client ausführen .. Ich kann nicht das Bild auf der SD-Karte auf meinem Android gefunden ... i Jungs brauchen Hilfesenden Bild von Server JAVA Android Client-Socket mit

ich bin mit android Studio und netbeans betonte Text

Server Java-Code

package javasever; 

import java.awt.image.BufferedImage; 
import java.io.ByteArrayOutputStream; 
import java.io.DataInputStream; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.IOException; 
import java.io.ObjectOutputStream; 
import java.io.OutputStream; 
import java.net.ServerSocket; 
import java.net.Socket; 
import java.util.logging.Level; 
import java.util.logging.Logger; 
import javax.imageio.ImageIO; 

/** 
* 
* @author METALHEADi 
*/ 
public class JavaSever { 

/** 
* @param args the command line arguments 
*/ 
public static void main(String[] args) { 
    // TODO code application logic here 

    Thread t= new Thread(new Runnable() { 
     @Override 
     public void run() { 
      try { 
       ServerSocket ss=new ServerSocket(400); 
       System.out.println("Runnig ........"); 
       while(true){ 
       Socket s=ss.accept(); 
            System.out.println("Accept........"); 
FileInputStream fis =new FileInputStream("D:\\PIC\\all pic\\simo.png"); 
         byte[]buffer=new byte [fis.available()]; 
         fis.read(buffer); 
         ObjectOutputStream oos =new ObjectOutputStream(s.getOutputStream()); 
         oos.write(buffer); 
         oos.close(); 
s.close(); 

        } 

       } catch (IOException ex) { 
        Logger.getLogger(JavaSever.class.getName()).log(Level.SEVERE, null, ex); 
       } 
      } 
     }); 
     t.start(); 













    } 

} 

Client android Code

package com.example.metalheadi.androidclient; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 

import java.io.DataOutputStream; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.ObjectInputStream; 
import java.net.Socket; 

public class MainActivity extends AppCompatActivity { 

    EditText IP,Port,Msg; 
    Button Send; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Send= (Button) findViewById(R.id.send); 
     IP= (EditText) findViewById(R.id.ip_e); 
     Port=(EditText)findViewById(R.id.port_e); 
     Msg=(EditText)findViewById(R.id.msg_e); 
     Send.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Thread thread =new Thread(new Runnable() { 
        @Override 
        public void run() { 
         try { 
          Socket socket= new Socket(IP.getText().toString(), Integer.parseInt(Port.getText().toString())); 
//       DataOutputStream stream =new DataOutputStream(socket.getOutputStream()); 
//       stream.writeUTF(Msg.getText().toString()); 
//       stream.flush(); 
//       stream.close(); 



          ObjectInputStream objectInputStream =new ObjectInputStream(socket.getInputStream()); 

          try { 
           byte[] buffer = (byte[]) objectInputStream.readObject(); 
           FileOutputStream fileOutputStream = new FileOutputStream("sdcard/simo.png"); 
           fileOutputStream.write(buffer); 
          }catch (ClassNotFoundException e) { 
           e.printStackTrace(); 
          } 









          socket.close(); 






         } catch (IOException e) { 
          e.printStackTrace(); 
         } 


        } 
       }); 

       thread.start(); 
      } 
     }); 

    } 
} 

XML android

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.example.metalheadi.androidclient.MainActivity"> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:text="IP" 
     android:id="@+id/ip" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:text="PORT" 
     android:id="@+id/port" 
     android:layout_marginTop="51dp" 
     android:layout_below="@+id/ip" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:text="Message" 
     android:id="@+id/msg" 
     android:layout_below="@+id/port" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_marginTop="51dp" /> 

    <EditText 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/ip_e" 
     android:layout_below="@+id/ip" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" /> 

    <EditText 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/port_e" 
     android:layout_below="@+id/port" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_alignRight="@+id/ip_e" 
     android:layout_alignEnd="@+id/ip_e" /> 

    <EditText 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/msg_e" 
     android:layout_below="@+id/msg" 
     android:layout_alignRight="@+id/port_e" 
     android:layout_alignEnd="@+id/port_e" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="SEND" 
     android:id="@+id/send" 
     android:layout_below="@+id/msg_e" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="62dp" /> 
</RelativeLayout> 

Antwort

0

Sie sind hier jeden Fehler in dem Buch zu machen.

  1. Sie missbrauchen available(). Sehen Sie sich Javadoc an, was es wirklich tut, und für eine spezielle Warnung gegen die Art, wie Sie es verwenden.
  2. Sie gehen davon aus, dass die Dateigröße zu einer Ganzzahl passt.
  3. Sie gehen davon aus, dass die Datei in den Speicher passt.
  4. Sie ignorieren die von read() zurückgegebene Anzahl.
  5. Sie schreiben Bytes, lesen aber ein Objekt.

Alles, was Sie brauchen, ist die folgende Kopie Schleife, ohne die Objektströme:

byte[] buffer = new byte[8192]; 
int count; 
while ((count = in.read(buffer)) > 0) 
{ 
    out.write(buffer, 0, count); 
} 

verwenden an beiden Enden.

Verwandte Themen