1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Socket Problem bei Tabview?

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von TangaPanda, 28.03.2011.

  1. TangaPanda, 28.03.2011 #1
    TangaPanda

    TangaPanda Threadstarter Neuer Benutzer

    Beiträge:
    7
    Erhaltene Danke:
    0
    Registriert seit:
    28.03.2011
    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

    Beiträge:
    1,230
    Erhaltene Danke:
    256
    Registriert seit:
    05.02.2010
    Phone:
    Nexus 5X
    Tablet:
    Nexus 7 (2013)
    Hat deine App die permission für den Internetzugriff?
     
    TangaPanda bedankt sich.
  3. TangaPanda, 28.03.2011 #3
    TangaPanda

    TangaPanda Threadstarter Neuer Benutzer

    Beiträge:
    7
    Erhaltene Danke:
    0
    Registriert seit:
    28.03.2011
    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

    Beiträge:
    7
    Erhaltene Danke:
    0
    Registriert seit:
    28.03.2011
    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