• 06-11-2014, 00:13:11
    #1
    Merhabalar..
    Android telefon(lar) üzerinden yerel ağda çalışan bir PC' ile Socket üzerinden irtibat sağlamak istiyorum. PC üzerinde çalışan bir uygulama server olarak client bazında Android telefonlarda çalışan uygulamarı dinleyecek. Android Client' den gelen mesajları işleyip, geri mesaj gönderecek..

    PC -- PC ile yaptığımda uygulamalar sorunsuz çalışmakta.

    Fakat Android -- PC olarak yaptığımda Client olan Android Uygulaması Server olan PC Uygulamasına mesaj gönderebiliyor.. Fakat PC uygulaması Android uygulamasına mesaj göndermesi konusunda bir türlü başarılı olamadım..
    İnternette bir çok uygulama var fakat Server olarak Android uygulaması öngörülmüş. Uyarlamaya çalıştım fakat başarılı olamadım. Java'nın Client Socket' i veri alımına uygun değilmi yoksa benmi beceremiyorum?? anlayamadım.

    Android (Java) Konusunda çok deneyimli olduğum söylenemez. Yardımcı olabilecek arkadaş varsa minnettar olurum..

    Tek yönlü (Android Clientten PC Servere Mesaj gönderebilen Uygulama) Ektedir.

    Eclipse - Android Developer Tools Build: v21.0.1-543035 Kullanıyorum..

    package com.example.a;
    
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.io.PrintWriter;
    import java.net.InetAddress;
    import java.net.Socket;
    import java.net.UnknownHostException;
    import android.os.Bundle;
    import android.app.Activity;
    import android.view.Menu;
    import android.view.View;
    import android.widget.EditText;
    
    
    
    public class MainActivity extends Activity {
    
    	    private Socket socket;
    	    private static final int SERVERPORT = 5000;
    	    private static final String SERVER_IP = "192.168.1.153";
    
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) 
    	{
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);	
    		new Thread(new ClientThread()).start();
    
    	}
    
    	@Override
    	public boolean onCreateOptionsMenu(Menu menu) 
    	{
    		// Inflate the menu; this adds items to the action bar if it is present.
    		getMenuInflater().inflate(R.menu.activity_main, menu);
    		return true;
    	}
    	
    
    	
    
    	
        public void SendClick(View view) 
        {
        	
        	
            EditText et = (EditText) findViewById(R.id.EditText01);
            String str = et.getText().toString();
           
            try 
            {
                PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
                out.println(str); 
            }
            catch (UnknownHostException e)	{e.printStackTrace();et.setText("err1");} 
            catch (IOException e) 			{e.printStackTrace();et.setText("err2");} 
            catch (Exception e) 			{e.printStackTrace();et.setText("err3");}
    
        }
        
        
        public void ReceiveClick(View view) 
        {
        	EditText et1 = (EditText) findViewById(R.id.editText1);
        	
        	try 
        	{
    			BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    			int lengthx=in.read();
    			String message=String.valueOf(lengthx);
    			et1.setText(message);
    	
    		} 
        	catch (IOException e1) 
        	{
    			// TODO Auto-generated catch block
    			e1.printStackTrace();
    			et1.setText("err1");
    		}
    
        }
    
        class ClientThread implements Runnable 
        {
            @Override
            public void run() 
            {
                try 
                {
                	InetAddress serverAddr = InetAddress.getByName(SERVER_IP);
                    socket = new Socket(serverAddr, SERVERPORT);
                } 
                catch (UnknownHostException e1) 	{e1.printStackTrace();} 
                catch (IOException e1) 				{e1.printStackTrace();}
            }
        }
        
    
        
        
        
        
    
    }