• 23-01-2014, 14:02:14
    #1
    Üyeliği durduruldu
    Merhaba Arkadaşlari
    Konuyu Hortlatmak Gibi Olacak ama ben bu java socket ile bir türlü TCP/IP üzerinden Gelen veriyi ekrana bastıramadım.. Nerde Hata Yapıyorum Bunuda Bulamadım.

    Konuya Hakim Bir Arkadaş Yardımcı Olabilirmi?

    Ek Olarak: Merhaba Kodları Değiştirdim ve Vereceğim Kodu Yazdım fakat Ben Bu Verileri Yine Ekrana Basamadım.

    Bağlantı sağlanıyor ama veriler ekrana basılmıyor tuaf olan tarayıcı üzerinden veya telnet üzerinden local de işlem oluyor ama dışardan gelen veri bağlanmasına rağmen ekrana basılamıyor.

    Ek Olarak:

    Ek Olarak: Merhaba Arkadaşlar Kodumu Değiştirdim.
    Fakat Bu Hali ile yine dışarıdan gelen socket bağlanıyor ama bağlanan cihazın verileri ekrana basılmıyor sadece bağlantı sağlandı diyor..?

    package server;
    import java.net.*;
    import java.io.*;
    
    public class Server {
    	public static void main(String[] args) throws IOException {
    
    		ServerSocket serverSocket = null;
    		try {
    			serverSocket = new ServerSocket(12801);
    		} catch (IOException e) {
    			System.err.println("I/O exception: " + e.getMessage());
    			System.exit(1);
    		}
    		System.out.println("Sunucu baslatildi. Baglanti bekleniyor...");
    		Socket clientSocket = null;
    		try {
    			clientSocket = serverSocket.accept(); 
    							      
    		} catch (IOException e) {
    			System.err.println("Bağlantı Başarısız Oldu.");
    			System.exit(1);
    		}
    
    		System.out.println(clientSocket.getLocalAddress() + " baglandi.");
    
    		// input stream ve output stream yaratılıyor...
    		PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
    		BufferedReader in = new BufferedReader(new InputStreamReader(
    				clientSocket.getInputStream()));
    
    		String inputLine, outputLine;
    		System.out.println("İstemciden girdi bekleniyor...");
    		while ((inputLine = in.readLine()) != null) { 
    							      
    			System.out.println("istemciden gelen :" + inputLine);
    		
    		}
    		System.out.println(clientSocket.getLocalSocketAddress()
    				+ " baglantisi kesildi.");
    		// stream ve socketleri kapat.
    		out.close();
    		in.close();
    		clientSocket.close();
    		serverSocket.close();
    	}
    }
  • 23-01-2014, 15:52:52
    #2
    mantığın yanlış hocam, bir tane listener yapman gereke runnable da
  • 23-01-2014, 16:05:51
    #3
    Üyeliği durduruldu
    ertan2002 adlı üyeden alıntı: mesajı görüntüle
    mantığın yanlış hocam, bir tane listener yapman gereke runnable da
    Merhaba Bu işte daha yeniyim 1 hafta falan oldu java öğrenmeye başlayalı

    zahmet olmaz ise bir tane örnek gösterebilir misin? veya kaynak..
  • 23-01-2014, 16:31:57
    #4
    projemden kod yollayayım dedim ama diğer bilgisayardaymış..
    mantık şu, bu verinin geleceği zamanı bilmediğin için sürekli olarak dinlemen gerek, bunun için bir döngüyü sonsuz çalıştırman lazım, ancak ui threadinde çalıştırırsan yazılım kilitlenir ve başka işlem yaptıramazsın, o yüzden harici bir thread üzerinden bu işi yaptıracaksın, veri geldiğinde kesme meydana gelecek onu işledikten sonra yine dinlemeye devam edecek ve öbür thread de kendi işine bakacak.

    örnek bakayım şimdi

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 16:31:57 -->-> Daha önceki mesaj 16:24:01 --

    buldum yaptığım kodları.. gerçi android için yapmıştım ama javada da sıkıntı olmaması lazım.. (activityler falan olmayacak sadece class içindeki kodları al) kendine göre düzenlersin.. benim bitirme çalışmamın projesiydi bu ) imzamdaki konuda görebilirsin uzaktan kontrol sistemini..
    kolay gelsin

    public class ServerActivity extends Activity {
    private TextView serverStatus;
    
    // default ip
    public static String SERVERIP = "10.0.2.15";
    
    // designate a port
    public static final int SERVERPORT = 12345;
    
    private Handler handler = new Handler();
    
    private ServerSocket serverSocket;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.server);
        serverStatus = (TextView) findViewById(R.id.server_status);
    
       SERVERIP = getLocalIpAddress();
    
        Thread fst = new Thread(new ServerThread());
        fst.start();
    }
    
    public class ServerThread implements Runnable {
        String line = "";
    
        public void run() {
    
            try {
                if (SERVERIP != null) {
                    handler.post(new Runnable() {
                        @Override
                        public void run() {
                            serverStatus.setText("Listening on IP: " + SERVERIP);
                        }
                    });
                    serverSocket = new ServerSocket(SERVERPORT);
                    while (true) {
                        // listen for incoming clients
                        Socket client = serverSocket.accept();
                        handler.post(new Runnable() {
                            @Override
                            public void run() {
                                serverStatus.setText("Connected.");
                            }
                        });
    
                        try {
                            BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
                     //       byte[] resultBuff = new byte[0];
                       //     byte[] buff = new byte[1024];
                         //   int k = -1;
                           // while((k = client.getInputStream().read(buff, 0, buff.length)) > -1) {
                             //   byte[] tbuff = new byte[resultBuff.length + k]; // temp buffer size = bytes already read + bytes last read
                               // System.arraycopy(resultBuff, 0, tbuff, 0, resultBuff.length); // copy previous bytes
                                //System.arraycopy(buff, 0, tbuff, resultBuff.length, k);  // copy current lot
                                //resultBuff = tbuff; // call the temp buffer as your result buff
                            //}
                            //System.out.println(resultBuff.length + " bytes read.");
    
    
    
    
                            while ((line = in.readLine()) != null) {
                                Log.d("ServerActivity", line);
    
    
                                handler.post(new Runnable() {
                                    @Override
                                    public void run() {
    
                                    serverStatus.setText(line);
                                    }
                                });
                            }
                            break;
                        } catch (Exception e) {
                            handler.post(new Runnable() {
                                @Override
                                public void run() {
                                    serverStatus.setText("Oops. Connection interrupted. Please reconnect your phones.");
                                }
                            });
                            e.printStackTrace();
                        }
                    }
                } else {
                    handler.post(new Runnable() {
                        @Override
                        public void run() {
                            serverStatus.setText("Couldn't detect internet connection.");
                        }
                    });
                }
            } catch (Exception e) {
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        serverStatus.setText("Error");
                    }
                });
                e.printStackTrace();
            }
        }
    }
  • 23-01-2014, 17:11:19
    #5
    Üyeliği durduruldu
    ertan2002 adlı üyeden alıntı: mesajı görüntüle
    projemden kod yollayayım dedim ama diğer bilgisayardaymış..
    mantık şu, bu verinin geleceği zamanı bilmediğin için sürekli olarak dinlemen gerek, bunun için bir döngüyü sonsuz çalıştırman lazım, ancak ui threadinde çalıştırırsan yazılım kilitlenir ve başka işlem yaptıramazsın, o yüzden harici bir thread üzerinden bu işi yaptıracaksın, veri geldiğinde kesme meydana gelecek onu işledikten sonra yine dinlemeye devam edecek ve öbür thread de kendi işine bakacak.

    örnek bakayım şimdi

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 16:31:57 -->-> Daha önceki mesaj 16:24:01 --

    buldum yaptığım kodları.. gerçi android için yapmıştım ama javada da sıkıntı olmaması lazım.. (activityler falan olmayacak sadece class içindeki kodları al) kendine göre düzenlersin.. benim bitirme çalışmamın projesiydi bu ) imzamdaki konuda görebilirsin uzaktan kontrol sistemini..
    kolay gelsin

    public class ServerActivity extends Activity {
    private TextView serverStatus;
    
    // default ip
    public static String SERVERIP = "10.0.2.15";
    
    // designate a port
    public static final int SERVERPORT = 12345;
    
    private Handler handler = new Handler();
    
    private ServerSocket serverSocket;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.server);
        serverStatus = (TextView) findViewById(R.id.server_status);
    
       SERVERIP = getLocalIpAddress();
    
        Thread fst = new Thread(new ServerThread());
        fst.start();
    }
    
    public class ServerThread implements Runnable {
        String line = "";
    
        public void run() {
    
            try {
                if (SERVERIP != null) {
                    handler.post(new Runnable() {
                        @Override
                        public void run() {
                            serverStatus.setText("Listening on IP: " + SERVERIP);
                        }
                    });
                    serverSocket = new ServerSocket(SERVERPORT);
                    while (true) {
                        // listen for incoming clients
                        Socket client = serverSocket.accept();
                        handler.post(new Runnable() {
                            @Override
                            public void run() {
                                serverStatus.setText("Connected.");
                            }
                        });
    
                        try {
                            BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
                     //       byte[] resultBuff = new byte[0];
                       //     byte[] buff = new byte[1024];
                         //   int k = -1;
                           // while((k = client.getInputStream().read(buff, 0, buff.length)) > -1) {
                             //   byte[] tbuff = new byte[resultBuff.length + k]; // temp buffer size = bytes already read + bytes last read
                               // System.arraycopy(resultBuff, 0, tbuff, 0, resultBuff.length); // copy previous bytes
                                //System.arraycopy(buff, 0, tbuff, resultBuff.length, k);  // copy current lot
                                //resultBuff = tbuff; // call the temp buffer as your result buff
                            //}
                            //System.out.println(resultBuff.length + " bytes read.");
    
    
    
    
                            while ((line = in.readLine()) != null) {
                                Log.d("ServerActivity", line);
    
    
                                handler.post(new Runnable() {
                                    @Override
                                    public void run() {
    
                                    serverStatus.setText(line);
                                    }
                                });
                            }
                            break;
                        } catch (Exception e) {
                            handler.post(new Runnable() {
                                @Override
                                public void run() {
                                    serverStatus.setText("Oops. Connection interrupted. Please reconnect your phones.");
                                }
                            });
                            e.printStackTrace();
                        }
                    }
                } else {
                    handler.post(new Runnable() {
                        @Override
                        public void run() {
                            serverStatus.setText("Couldn't detect internet connection.");
                        }
                    });
                }
            } catch (Exception e) {
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        serverStatus.setText("Error");
                    }
                });
                e.printStackTrace();
            }
        }
    }

    Paylaşım için teşekkür ederim.
    fakat dediğim gibi epey acemi olduğum için senin verdiğin kodlar ile kendi kodlarımı birleştiremedim

    yardımcı olabilir misiniz?
  • 23-01-2014, 22:37:29
    #6
    hocam çok zamanım yok bunu javaya uyarlamaya.. kendin uğraşırsan biraz yapabileceğine inanıyorum
    mesela serverStatus = (TextView) findViewById(R.id.server_status);
    bu kısımı kaldrıacaksın bunun yerine direk loglamayı kullanabilrisn.. bağlantı yapısını incele hocam, onu anlamaya çalış ve kendi yazdığın kodları düzenle buna göre özellikle runnable kısmına bak, araştır çözersin
  • 24-01-2014, 00:42:01
    #7
    Geçen yıl Java Socket ile basit chat uygulaması yapmıştık. Package'ları aşağıda paylaşıyorum, formu NetBeans ile yapmıştık sanıyorum. Az önce yine test ettim, NetBeans'ta derlerseniz çalışacaktır...

    link: http://download.azizarslan.com/SocketChatPackages.zip
  • 24-01-2014, 17:55:48
    #8
    Üyeliği durduruldu
    azizarslan adlı üyeden alıntı: mesajı görüntüle
    Geçen yıl Java Socket ile basit chat uygulaması yapmıştık. Package'ları aşağıda paylaşıyorum, formu NetBeans ile yapmıştık sanıyorum. Az önce yine test ettim, NetBeans'ta derlerseniz çalışacaktır...

    link: http://download.azizarslan.com/SocketChatPackages.zip
    Merhaba @azizarslan kardeşim paylaşım için teşekkür ederim fakat proje olarak değil de yanlızca *.java uzantılı dosyalar olduğu için test etme şansım olmadı.. bilginize.
  • 24-01-2014, 17:57:33
    #9
    bayraktar adlı üyeden alıntı: mesajı görüntüle
    Merhaba @azizarslan kardeşim paylaşım için teşekkür ederim fakat proje olarak değil de yanlızca *.java uzantılı dosyalar olduğu için test etme şansım olmadı.. bilginize.
    Yeni bir proje açıp, o projeye bu iki paketi eklerseniz test edebilirsiniz.