Socket Problem bei Tabview?

  • 3 Antworten
  • Neuester Beitrag
Diskutiere Socket Problem bei Tabview? im Android App Entwicklung im Bereich Betriebssysteme & Apps.
T

TangaPanda

Neues Mitglied
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!
 
DieGoldeneMitte

DieGoldeneMitte

Experte
Hat deine App die permission für den Internetzugriff?
 
T

TangaPanda

Neues Mitglied
AAAAAAAA Du bist mein Held heute! Habs bei dem Testprogramm drin gehabt und vergessen zu übertragen... :D Danke!!!!!!!
 
T

TangaPanda

Neues Mitglied
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();
                }
            }
        });