1. Wir haben diesmal 2 Gewinnspiele zeitgleich für euch - Gewinne einmal ein UMI Plus E - Beim 2ten könnt ihr ein Nomu S30 gewinnen!
  1. TangaPanda, 28.03.2011 #1
    TangaPanda

    TangaPanda Threadstarter Neuer Benutzer

    Hey,
    erst mal ein Hallo an alle, bin neu hier.
    Ich habe folgendes Problem und hoffe ihr könnt mir da weiter helfen. Ich habe einen Thread geschrieben, der einen String über ein TCP Socket sendet. Funktioniert als Stand alone auch super. Jetzt wollt ich das in mein eigentliches Programm einbaun (eine Mainactivity in der 3 Tabs erstellt werden und 3 Activititys für die Tabs) und siehe da, nichts geht :). Es lässt sich kein Socket connecten. Beim Log "Try Socket B3" Wirft er ne IOException. Hat jemand ne Idee?

    Thread:

    Code:
    public class CommunicationThread implements Runnable {
        
        final String tag = "TAG";
        public String IP="meine Ip...."; // In meinem Programm ist es die richtige IP^^
        public int PORT=5000;
        Socket sk;
        PrintWriter out;
        SocketAddress sockaddr;
        
        @Override
        public void run() {
            // TODO Auto-generated method stub
            try {
                Log.v(tag,"Try Socket B1");
                SocketAddress sockaddr = new InetSocketAddress(IP, PORT);
                Log.v(tag,"Try Socket B2");
                sk = new Socket();
                Log.v(tag,"Try Socket B3");
                sk.connect(sockaddr);
                Log.v(tag,"Try Socket B4");
                out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(sk.getOutputStream())),true);
            } catch (UnknownHostException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                Log.v(tag,"Catch");
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                Log.v(tag,"Catch2");
            }
        }
    
    }
    
    Start des Threads ist dann in einer der 3 TabActivitys.

    Grüße!
     
  2. DieGoldeneMitte, 28.03.2011 #2
    DieGoldeneMitte

    DieGoldeneMitte Android-Lexikon

    Hat deine App die permission für den Internetzugriff?
     
    TangaPanda bedankt sich.
  3. TangaPanda, 28.03.2011 #3
    TangaPanda

    TangaPanda Threadstarter Neuer Benutzer

    AAAAAAAA Du bist mein Held heute! Habs bei dem Testprogramm drin gehabt und vergessen zu übertragen... :D Danke!!!!!!!
     
  4. TangaPanda, 05.04.2011 #4
    TangaPanda

    TangaPanda Threadstarter Neuer Benutzer

    Hey ich hab noch ne Frage zu dem Ganzen..
    Ich hab jetzt die Permission erteilt und es ging. Jetzt wollt ich n Bild schicken lassen vom Java Server zum Android Client. Aber er kann keine Connection aufbauen. Bekomme immer eine IOException.
    Bekomme keine Verbindung hin.. Beim AndroidClientCode bricht er immer bei sock.connect(sockaddr); ab..
    Ich mach jetzt schon seit 4 Stunden dran rum und kapiers einfach nicht. Hier meine Codes:

    Java Server:

    Code:
    public class Server {
      
        public static void main (String [] args ) throws IOException {
            
            File f = new File("D:\\Programmieren\\Android\\Server\\src\\icon.png");
            System.out.println("File");
            ServerSocket s = new ServerSocket(4444);
            System.out.println("ServerSocket created:"+s.getLocalPort());
            
            while(true) {
                
                System.out.println("Waiting: ");
                Socket client = s.accept();
                System.out.println("Accepted connection : " + client);
    
                byte[] buffer = new byte[(int)f.length()];
                FileInputStream fis = new FileInputStream(f);
                BufferedInputStream bis = new BufferedInputStream(fis);
                bis.read(buffer,0,buffer.length);
    
                OutputStream oos = client.getOutputStream();
                System.out.println("sending...");
                oos.write(buffer,0,buffer.length);
                
                oos.flush();
                client.close();
                System.out.println("closed");
            }
        }
    }
    
    und hier Android Client:
    Code:
            Thread th = new Thread(new Runnable() {
    
                @Override
                public void run() {
    
                    int filesize=6022386; // filesize temporary hardcoded
    
                    long start = System.currentTimeMillis();
                    int bytesRead;
                    int current = 0;
                    // localhost for testing
                    try {
                        InetSocketAddress sockaddr = new InetSocketAddress(IP, PORT);
                        Socket sock = new Socket();
                        sock.connect(sockaddr);
                        // receive file
                        byte [] mybytearray  = new byte [filesize];
                        InputStream is = sock.getInputStream();
    
                        bytesRead = is.read(mybytearray,0,mybytearray.length);
                        current = bytesRead;
                        
                        do {
                           bytesRead =
                              is.read(mybytearray, current, (mybytearray.length-current));
                           if(bytesRead >= 0) current += bytesRead;
                        } while(bytesRead > -1);
    
                        Bitmap image = BitmapFactory.decodeByteArray(mybytearray, 0, bytesRead);
                        iv.setImageBitmap(image);
                        sock.close();
                    } catch (UnknownHostException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                        Log.v("LOG","Unknown Host Exception");
                    } catch (FileNotFoundException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    } catch (IOException e) {
                        Log.v("LOG","IO Exception");
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            });
     

Diese Seite empfehlen