• 05-02-2014, 11:12:40
    #1
    Üyeliği durduruldu
    Merhaba Arkadaşlar,
    Malum Java Öğrenmeye Çalışıyorum Bu Bağlamda Bir Kaç Örnek Yazılım Hazırlamaya Çalşıyorum ve Kendi Hazırladığım Socketlerde Bir türlü veri alamamıştım. netten bir örnek buldum tuaf bunda da veriyi alamadım

    Şimdi Kodlar Şöyle :

    package soketprogramla;
    
    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.IOException;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.net.SocketTimeoutException;
    
    public class MyServer extends Thread {
    
        private ServerSocket sSocket;
    
        public MyServer(int port) {
            try {
                sSocket = new ServerSocket(port);//socket() safhasi
                sSocket.setSoTimeout(900000);
            } catch (Exception e) {
            }
        }
    
        public void run() {
            while (true) {
                try {
                    System.out.println("Server port bekliyor..." + sSocket.getLocalPort());
                    Socket socket = sSocket.accept();
                    System.out.println("Belirtilen adrese baglanti basarilidir=" + socket.getRemoteSocketAddress());
                    DataInputStream read = new DataInputStream(socket.getInputStream());
                    System.out.println(read.readUTF());//client tan veriler geliyor,read()
                    //DataOutputStream write = new DataOutputStream(socket.getOutputStream());
                    //write.writeUTF("Tesekkur ederiz "+socket.getRemoteSocketAddress()+" yine bekleriz\n");//client a veri gönderiliyor,write()
                    //socket.close();//close() safhasi
                } catch (SocketTimeoutException s) {
                    System.out.println("Socket timed out!");
                    break;
                } catch (IOException e) {
                    e.printStackTrace();
                    break;
                }
            }
        }
    
        public static void main(String[] args) {
            Thread thread = new MyServer(1281);
            thread.start();
        }
    }
    Gelen cevap Böyle :

    Server port bekliyor...1281
    Belirtilen adrese baglanti basarilidir=/178.247.xxx.xxx:60xx

    Buraya Kadar Herşey Tamam Fakat Buradan Sonra Cihazın Gönderdiği verileri Ekrana Dökmesi Lazım fakat veriler ekrana Dökülmüyor.
  • 05-02-2014, 12:05:52
    #2
    MyServer.java

    import java.io.*;
    import java.net.*;
    
    public class MyServer extends Thread
    {
    
      private ServerSocket sSocket;
    
      public MyServer(int port)
      {
        try
        {
          sSocket = new ServerSocket(port);//socket() safhasi
          sSocket.setSoTimeout(900000);
        } catch(Exception e)
        {
        }
      }
    
      public void run()
      {
        while(true)
        {
          try
          {
            System.out.println("Server port bekliyor..." + sSocket.getLocalPort());
            Socket socket = sSocket.accept();
            System.out.println("Belirtilen adrese baglanti basarilidir=" + socket.getRemoteSocketAddress());
    
            PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
            BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            String inputLine;
    
            while((inputLine = in.readLine()) != null)
            {
              System.out.println("İstemciden alinan veri: " + inputLine);
              out.println(inputLine + " dediniz.");
            }
    
            out.close();
            in.close();
    
            //DataOutputStream write = new DataOutputStream(socket.getOutputStream());
            //write.writeUTF("Tesekkur ederiz "+socket.getRemoteSocketAddress()+" yine bekleriz\n");//client a veri gönderiliyor,write()
            //socket.close();//close() safhasi
          } catch(SocketTimeoutException s)
          {
            System.out.println("Socket timed out!");
            break;
          } catch(IOException e)
          {
            e.printStackTrace();
            break;
          }
        }
      }
    
      public static void main(String[] args)
      {
        Thread thread = new MyServer(1281);
        thread.start();
      }
    }
    Client sınıfını vermediğiniz için karşılaşabileceğiniz başka bir sorunun çıkması ihtimaline karşı, test ederken kullandığım sınıfı da inceleyebilirsiniz.

    MyClient.java

    import java.io.*;
    import java.net.*;
    
    public class MyClient
    {
      public static void main(String[] args) throws IOException
      {
        String serverHostname = "127.0.0.1";
    
        Socket socket = null;
        PrintWriter out = null;
        BufferedReader in = null;
    
        socket = new Socket(serverHostname, 1281);
        out = new PrintWriter(socket.getOutputStream(), true);
        in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    
        BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
        String userInput;
    
        System.out.print("Gonderilecek veri: ");
    
        while((userInput = stdIn.readLine()) != null)
        {
          out.println(userInput);
          System.out.println("Sunucunun cevabi: " + in.readLine());
          System.out.print("Gonderilecek veri: ");
        }
    
        out.close();
        in.close();
        stdIn.close();
        socket.close();
      }
    }
  • 05-02-2014, 12:36:45
    #3
    Üyeliği durduruldu
    PsiCat adlı üyeden alıntı: mesajı görüntüle
    MyServer.java

    import java.io.*;
    import java.net.*;
    
    public class MyServer extends Thread
    {
    
      private ServerSocket sSocket;
    
      public MyServer(int port)
      {
        try
        {
          sSocket = new ServerSocket(port);//socket() safhasi
          sSocket.setSoTimeout(900000);
        } catch(Exception e)
        {
        }
      }
    
      public void run()
      {
        while(true)
        {
          try
          {
            System.out.println("Server port bekliyor..." + sSocket.getLocalPort());
            Socket socket = sSocket.accept();
            System.out.println("Belirtilen adrese baglanti basarilidir=" + socket.getRemoteSocketAddress());
    
            PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
            BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            String inputLine;
    
            while((inputLine = in.readLine()) != null)
            {
              System.out.println("İstemciden alinan veri: " + inputLine);
              out.println(inputLine + " dediniz.");
            }
    
            out.close();
            in.close();
    
            //DataOutputStream write = new DataOutputStream(socket.getOutputStream());
            //write.writeUTF("Tesekkur ederiz "+socket.getRemoteSocketAddress()+" yine bekleriz\n");//client a veri gönderiliyor,write()
            //socket.close();//close() safhasi
          } catch(SocketTimeoutException s)
          {
            System.out.println("Socket timed out!");
            break;
          } catch(IOException e)
          {
            e.printStackTrace();
            break;
          }
        }
      }
    
      public static void main(String[] args)
      {
        Thread thread = new MyServer(1281);
        thread.start();
      }
    }
    Client sınıfını vermediğiniz için karşılaşabileceğiniz başka bir sorunun çıkması ihtimaline karşı, test ederken kullandığım sınıfı da inceleyebilirsiniz.

    MyClient.java

    import java.io.*;
    import java.net.*;
    
    public class MyClient
    {
      public static void main(String[] args) throws IOException
      {
        String serverHostname = "127.0.0.1";
    
        Socket socket = null;
        PrintWriter out = null;
        BufferedReader in = null;
    
        socket = new Socket(serverHostname, 1281);
        out = new PrintWriter(socket.getOutputStream(), true);
        in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    
        BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
        String userInput;
    
        System.out.print("Gonderilecek veri: ");
    
        while((userInput = stdIn.readLine()) != null)
        {
          out.println(userInput);
          System.out.println("Sunucunun cevabi: " + in.readLine());
          System.out.print("Gonderilecek veri: ");
        }
    
        out.close();
        in.close();
        stdIn.close();
        socket.close();
      }
    }
    Merhaba Paylaşım için teşekkür ederim fakat ben client kullanmıyorum bana veriyi yollayan bir cihaz.
  • 05-02-2014, 14:07:16
    #4
    bayraktar adlı üyeden alıntı: mesajı görüntüle
    Merhaba Paylaşım için teşekkür ederim fakat ben client kullanmıyorum bana veriyi yollayan bir cihaz.
    Bir cihaz da kullansanız veriler TCP/IP protokolü ile iletileceği için bunun herhangi önemi yok, zira client, cihazın kendisidir. Lakin bu durumda cihazın gönderdiği verileri nasıl sonlandırdığını bilmek önemli. Çoğu durumda veriler boş bir byte ile sonlandırılır ancak bu konuda herhangi bir standart uygulama yoktur. Zira bilgiler sadece bir boşluk veya özel bir işaret ile de ayrılıyor olabilir. Eğer cihazınızın kullanım klavuzunda ağ iletişimi hakkında bu tür bir bilgi varsa bunu da paylaşmanız gerekli.
  • 05-02-2014, 15:08:35
    #5
    Üyeliği durduruldu
    PsiCat adlı üyeden alıntı: mesajı görüntüle
    Bir cihaz da kullansanız veriler TCP/IP protokolü ile iletileceği için bunun herhangi önemi yok, zira client, cihazın kendisidir. Lakin bu durumda cihazın gönderdiği verileri nasıl sonlandırdığını bilmek önemli. Çoğu durumda veriler boş bir byte ile sonlandırılır ancak bu konuda herhangi bir standart uygulama yoktur. Zira bilgiler sadece bir boşluk veya özel bir işaret ile de ayrılıyor olabilir. Eğer cihazınızın kullanım klavuzunda ağ iletişimi hakkında bu tür bir bilgi varsa bunu da paylaşmanız gerekli.
    merhaba o kısım biraz zor paylaşma olayı gizli bilgiye giriyor..

    şimdi server kodlarını denedim de telnet ile de veriyi alamadı..
  • 05-02-2014, 15:18:06
    #6
    bayraktar adlı üyeden alıntı: mesajı görüntüle
    merhaba o kısım biraz zor paylaşma olayı gizli bilgiye giriyor..

    şimdi server kodlarını denedim de telnet ile de veriyi alamadı..
    telnet 127.0.0.1 1281
    Trying 127.0.0.1...
    Connected to 127.0.0.1.
    Escape character is '^]'.
    Merhaba
    Merhaba dediniz.
    Server port bekliyor...1281
    Belirtilen adrese baglanti basarilidir=/127.0.0.1:44240
    İstemciden alinan veri: Merhaba