0

..:: آموزش جامع سوکت نویسی با زبان جاوا ::..

 
siryahya
siryahya
کاربر طلایی1
تاریخ عضویت : اسفند 1389 
تعداد پست ها : 158652
محل سکونت : ▂▃▄▅▆▇█Tabriz█▇▆▅▄▃▂

پاسخ به:..:: آموزش جامع سوکت نویسی با زبان جاوا ::..

متد هشتم از کلاس Srever1
 
 
کد PHP:
 
                      private void displayMessage(final String mssg) { 
         
                          SwingUtilities.invokeLater( 
                                   
                                  new Runnable() 
                          { 
                            public void run() 
                            { 
                                displayArea.append(mssg); 
                            } 
                          } 
                              
                                                          
                                   
                                  ); 
                           
                           
    }  
 
این متد هم JTextArea مارو
با استفاده از واسط Runnable با دریافت
و ارسال هر پیغام سریع آپدیت می کند

 

ترکی زبان قربون صدقه رفتنه داریم که: گوزلرین گیله‌سین قاداسین آلیم که یعنی درد و بلای مردمک چشات به جونم …!.

دوشنبه 21 اردیبهشت 1394  3:05 AM
تشکرات از این پست
siryahya
siryahya
کاربر طلایی1
تاریخ عضویت : اسفند 1389 
تعداد پست ها : 158652
محل سکونت : ▂▃▄▅▆▇█Tabriz█▇▆▅▄▃▂

پاسخ به:..:: آموزش جامع سوکت نویسی با زبان جاوا ::..

متد نهم آخرین متد کلاس Server1  
 
 
کد PHP:
        private void setTextFieldEditable(final boolean b) { 
        
               SwingUtilities.invokeLater( 
                                   
                                  new Runnable() 
                          { 
                            public void run() 
                            { 
                               enterField.setEditable(b); 
                            } 
                          } 
                                   
                                   
                                   
                                   
                                  ); 
    }  
 
این متد هم یک مقدار بولین بعنوان پارامتر دریافت می کند
در اصل کار این متد این هستش
زمانی که شما یه رشته ای رو برا کلاینت ارسال می کنید تا زمان دریافت داده ها کادر
تکست شما در حالت غیر قابل ویرایش قرار میگیرد
که این کار بوسیله واسط Runnable بصورت خودکار انجام می شود

 

ترکی زبان قربون صدقه رفتنه داریم که: گوزلرین گیله‌سین قاداسین آلیم که یعنی درد و بلای مردمک چشات به جونم …!.

دوشنبه 21 اردیبهشت 1394  3:05 AM
تشکرات از این پست
siryahya
siryahya
کاربر طلایی1
تاریخ عضویت : اسفند 1389 
تعداد پست ها : 158652
محل سکونت : ▂▃▄▅▆▇█Tabriz█▇▆▅▄▃▂

پاسخ به:..:: آموزش جامع سوکت نویسی با زبان جاوا ::..

سورس کامل کلاس Server1  
 
کد PHP:
 
 
import java.io.EOFException; 
import java.io.IOException; 
import java.io.ObjectInputStream; 
import java.io.ObjectOutputStream; 
import java.net.ServerSocket; 
import java.net.Socket; 
import java.awt.BorderLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.*; 
 
 
    public class Server1 extends JFrame{ 
 
        private JTextField enterField; 
            private JTextArea displayArea; 
                private ObjectOutputStream output; 
                    private ObjectInputStream input; 
        private ServerSocket server; 
            private Socket connection; 
                private int counter=1; 
                 
                public Server1() 
                { 
                    super("Server"); 
                     
                    enterField=new JTextField(); 
                        enterField.setEditable(false); 
                            enterField.addActionListener(new ActionListener(){ 
                             
                                public void actionPerformed(ActionEvent event) 
                                { 
                                sendData(event.getActionCommand()); 
                                    enterField.setText(""); 
                                } 
                            }); 
                             
                add(enterField,BorderLayout.NORTH); 
                displayArea=new JTextArea(); 
                    add(new JScrollPane(displayArea)); 
                     
                        setSize(300,150); 
                            setVisible(true); 
                } 
                 
                ////////////////////////////////////////////////////////// 
                 
                 
                public void runServer() throws Exception 
                { 
                 
                try 
                { 
                    server=new ServerSocket(12345,100); 
                     
                    while(true) 
                    { 
                        try 
                    { 
                    waitForConnection(); 
                        getStreams(); 
                        processConnection(); 
                    } 
                    catch(EOFException eof) 
                    { 
                        displayMessage("\nServer terminated connection"); 
                    } 
                    finally 
                    { 
                    closeConnection(); 
                    ++counter; 
                    } 
                } 
                    } 
                catch(IOException io) 
                { 
                io.printStackTrace(); 
                } 
                } 
 
   
 
   
               ///////////////////////////////////////////////////////// 
                 
                private void waitForConnection()throws Exception 
                { 
                    displayMessage("Waite For Connection...\n"); 
                        connection=server.accept(); 
                            displayMessage("Connection "+counter+"received from: "+connection.getInetAddress().getHostName()); 
                } 
                 
                    private void getStreams()throws IOException 
                    { 
                        output=new ObjectOutputStream(connection.getOutputStream()); 

 

ترکی زبان قربون صدقه رفتنه داریم که: گوزلرین گیله‌سین قاداسین آلیم که یعنی درد و بلای مردمک چشات به جونم …!.

دوشنبه 21 اردیبهشت 1394  3:05 AM
تشکرات از این پست
siryahya
siryahya
کاربر طلایی1
تاریخ عضویت : اسفند 1389 
تعداد پست ها : 158652
محل سکونت : ▂▃▄▅▆▇█Tabriz█▇▆▅▄▃▂

پاسخ به:..:: آموزش جامع سوکت نویسی با زبان جاوا ::..

کلاس Server1 هم به سلامتی 
پیاده سازی شد حالا برا ران کردنش نیاز به تابع
main دارد این تابع ، تابع اصلی برنامه جاواست دقیقا مثل زبان c..c++
تا این تابع نباشد کلاس Server1 اجرا نمی شود
 
 
سورس تابع main 
 
کد PHP:
import javax.swing.*;
 
public class Server1Test {
 
    public static void main(String[] args) throws Exception
    {
    
        Server1 server=new Server1();
            server.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                server.setVisible(true);
             server.setLocation(150,130);
           server.setSize(300,150);
         server.runServer();
    }
}  
 
 
سورسهای این تابع علاوه بر تنظیمات نمایش فرم و...
برا ران کردن تابع اصلی کلاس سرور هم استفاده می شود.
 
یک شی از کلاس Server1 ایجاد کرده ایم تا بتوانیم
اداره کامل کلاس رو در دست بگیریم(برا دسترسی به توابع و... ازش استفاده کنیم)
 
 
 
 
اگر تا الان هر کجای سورس برنامه رو متوجه نشدید می توانید با pm به بنده اطلاع دهید.

 

ترکی زبان قربون صدقه رفتنه داریم که: گوزلرین گیله‌سین قاداسین آلیم که یعنی درد و بلای مردمک چشات به جونم …!.

دوشنبه 21 اردیبهشت 1394  3:06 AM
تشکرات از این پست
siryahya
siryahya
کاربر طلایی1
تاریخ عضویت : اسفند 1389 
تعداد پست ها : 158652
محل سکونت : ▂▃▄▅▆▇█Tabriz█▇▆▅▄▃▂

پاسخ به:..:: آموزش جامع سوکت نویسی با زبان جاوا ::..

الان دیگه نوبت اینه که کلاس Client رو نیز پیاده سازی کنیم ولی اول برویم
 
سراغ زنگــــــ تفریــــــــــــح  
 
 
شاید بین شما دوستان کسانی هستند که دوست دارند با زبان جاوا برا خودشون
یه برنامه IpFinder بنویسند...... 
 
 
من هم اومدم این سورس رو براتون خیلی ساده آماده کردم
 
بفرمایید
 
کد PHP:
import java.net.*; 
import java.util.*; 
public class IPfinder { 
   public static void main(String[] args) { 
    
     String host; 
     Scanner input = new Scanner(System.in); 
     System.out.print("\nEnter host name: "); 
     host = input.next(); 
     try { 
    InetAddress address2 = InetAddress.getByName(host); 
    System.out.println("IP address: " + address2.toString()); 
     }catch (UnknownHostException uhEx) { 
    System.out.println("Could not find " + host); 
     }    } 
  }  
 
کد PHP:
InetAddress.getByName(host);  
این قطعه کد بعد از دریافت نام تارگت (که به این شکل www.site.com باید 
وارد شود) شروع به سرچ کردن برا یافتن Ip می کند
زمانی Ip رو پیدا کرد به کار خود ادامه میدهد. 
 
اگر پیدا نشد یک استثناء از نوع UnknownHostException به راه 
می اندازد که این استثناء مبنی بر پیدا نکردن ip تارگت می باشد
که ما با استفاده از فرمان try این استثناء ها رو از قبل بلوکه کردیم  
 
 
 
نکته
 
یادمان باشد که ما با استفاده از کلاس InetAddress 
ip تارگت رو پیدا کردیم.

 

ترکی زبان قربون صدقه رفتنه داریم که: گوزلرین گیله‌سین قاداسین آلیم که یعنی درد و بلای مردمک چشات به جونم …!.

دوشنبه 21 اردیبهشت 1394  3:06 AM
تشکرات از این پست
siryahya
siryahya
کاربر طلایی1
تاریخ عضویت : اسفند 1389 
تعداد پست ها : 158652
محل سکونت : ▂▃▄▅▆▇█Tabriz█▇▆▅▄▃▂

پاسخ به:..:: آموزش جامع سوکت نویسی با زبان جاوا ::..

توضیحات مرحله یک در سرویس گیرنده
 
 
در این مر حله یک سوکت برای اتصال به سرویس دهنده ایجاد می شود.
سازنده سوکت یک اتصال با سرویس دهنده ایجاد می کند.
بعنوان مثال در قسمت زیر
 
کد PHP:
Socket connection=new Socket(ServerAddres,port);  
از سازنده سوکت با دو آرگومان استفاده کرده ایم
که یکیش آدرس سرویس دهنده ما می باشد
و دیگریش هم که معلومه شماره پورتی که
در سرور به حال لیستن قرار دادیم رو وارد می کنیم.
 
اگر اتصال با موفقیت همراه باشد عبارت بالا یک سوکت برگشت میدهد
اگر ناموفق باشد یک نمونه از زیر کلاس IOException به راه می اندازد.
اکثر برنامه ها فقط IOException رو بلوکه می کنند.
 
ولی یک UnknownHostException زمانی رخ میدهد که سیستم قادر به تجزیه آدرس 
سرویس دهنده مشخص شده در فراخوانی سازنده سوکت با آدرس Ip متناظر نباشد.
 
 
نکتــــــه :
اگر این استثناء در برنامه رخ دهد یک حفره 
در برنامه ما ایجاد میشود که یک نفوذگر
با استفاده از اکسپلویت کردن آن می تواند به برنامه ما نفوذ کند.
پس یادتان باشد که تمام استثناءها رو در همه شرایط تست و بلوکه کنید.
 
 
 
مراحل دو ،سه و چهار هم دقیقا شبیه به
مراحل سرور هستند دیگر نیازی به توضیح ندارند. 

 

ترکی زبان قربون صدقه رفتنه داریم که: گوزلرین گیله‌سین قاداسین آلیم که یعنی درد و بلای مردمک چشات به جونم …!.

دوشنبه 21 اردیبهشت 1394  3:06 AM
تشکرات از این پست
siryahya
siryahya
کاربر طلایی1
تاریخ عضویت : اسفند 1389 
تعداد پست ها : 158652
محل سکونت : ▂▃▄▅▆▇█Tabriz█▇▆▅▄▃▂

پاسخ به:..:: آموزش جامع سوکت نویسی با زبان جاوا ::..

سورس کامل کلاس کلاینت 
 
 
کد PHP:
 
import java.io.EOFException; 
import java.io.IOException; 
import java.io.ObjectInputStream; 
import java.io.ObjectOutputStream; 
import java.net.InetAddress; 
import java.net.Socket; 
import java.awt.BorderLayout; 
import java.awt.event.ActionEvent; 
import javax.swing.*; 
import java.awt.event.ActionListener; 
 
 
  public class Client1 extends JFrame{ 
 
      private JTextField enterField; 
        private JTextArea displayArea; 
            private ObjectOutputStream output; 
                private ObjectInputStream input; 
                    private String message=""; 
                        private String chatServer; 
                            private Socket client; 
 
 
                    public Client1(String host) 
                    { 
                        super("Client"); 
 
                            chatServer=host; 
 
                            enterField=new JTextField(); 
                                enterField.setEditable(true); 
                                enterField.addActionListener(new ActionListener() 
 
 
                                    { 
 
                                        public void actionPerformed(ActionEvent event) 
                                        { 
                                            sendData(event.getActionCommand()); 
                                                enterField.setText(""); 
 
                                        } 
                                } 
                                        ); 
                         add(enterField,BorderLayout.NORTH); 
                displayArea=new JTextArea(); 
                    add(new JScrollPane(displayArea)); 
 
                        setSize(300,150); 
                            setVisible(true); 
 
                    } 
                    /////////////////////////////////////////////// 
 
         public void runClient() throws Exception 
                { 
 
             try{ 
                    connectToServer(); 
                    getStreams(); 
                    processConnection(); 
 
             } 
             catch(EOFException exe) 
             { 
             displayMessage("\nClient terminated connection"); 
             } 
             catch(IOException e) 
             { 
             e.printStackTrace(); 
             } 
             finally 
             { 
             closeConnection(); 
             } 
 
                } 
          //////////////////////////////////////////////////// 
 
         private void connectToServer() throws IOException 
         { 
            displayMessage("Attempting connection"); 

 

ترکی زبان قربون صدقه رفتنه داریم که: گوزلرین گیله‌سین قاداسین آلیم که یعنی درد و بلای مردمک چشات به جونم …!.

دوشنبه 21 اردیبهشت 1394  3:06 AM
تشکرات از این پست
siryahya
siryahya
کاربر طلایی1
تاریخ عضویت : اسفند 1389 
تعداد پست ها : 158652
محل سکونت : ▂▃▄▅▆▇█Tabriz█▇▆▅▄▃▂

پاسخ به:..:: آموزش جامع سوکت نویسی با زبان جاوا ::..

توضیحات در مورد قطعه کد زیر
 
کد PHP:
 Socket connection=new Socket(ServerAddres,port);  
 
 
همانطور که می دانید کلاسهای جاوا بسیار زیاد و بسیار مفید می باشند
 
 
 
 
شاید الان براتون سوال پیش بیاد که چرا دوباره می خواهم درباره این
سورس کد براتون توضیح بدم.....؟؟؟؟؟؟؟؟؟؟
 
اگر متن بالا رو خوب خوانده باشید گفتم از این سورس برا متصل شدن
به Ip سرور موردنظر با پورت مشخص شده استفاده می کنیم
 
 
این یعنـــــی ما موتور یک پورت اسکنر رو پیاده سازی کردیم. 
 
 
حالا ما با سورس کد بالا یعنی همین قطعه کدی که بدون توجه بهش به ادامه مطلب
پرداختیم می تواند برا ما کار یک پورت اسکنر رو انجام دهد.
 
 
 
 
شما با استفاده از یک String بعنوان Ip سرور
و یک حلقه ی for که شمارنده آن 
با استفاده از دو متغییر صحیح که خودتان در برنامه تعریف می کنید
می توانید یک پورت اسکنر عالی رو پیاده سازی کنید.
اگر پورت باز بود که با یک پیغام بوسیله متد print به کاربر
نشان میدهیم که باز است در غیر اینصورت یعنی اگر
بسته بود برنامه یک استثناء در حیطه ی IOException به راه می اندازد
که شما با استفاده از شی این کلاس می توانید به کاربر
اعلان کنید که پورت بسته می باشد.
 
خوب الان شما دیگه می توانید با استفاده از سوکت نویسی در جاوا
یک پورت اسکنر بسیار مفید برا خودتون
پیاده سازی کنید 

 

ترکی زبان قربون صدقه رفتنه داریم که: گوزلرین گیله‌سین قاداسین آلیم که یعنی درد و بلای مردمک چشات به جونم …!.

دوشنبه 21 اردیبهشت 1394  3:06 AM
تشکرات از این پست
siryahya
siryahya
کاربر طلایی1
تاریخ عضویت : اسفند 1389 
تعداد پست ها : 158652
محل سکونت : ▂▃▄▅▆▇█Tabriz█▇▆▅▄▃▂

پاسخ به:..:: آموزش جامع سوکت نویسی با زبان جاوا ::..

کلاس Client هم دقیقا شبیه کلاس Server هستش
 
برا هیمن دیگه درموردش توضیح ندادم.....  
 
تفاوتشون هم در نحوه ی برقراری ارتباط است
 
کلاس Server پورت رو در حالت لیستن قرار میداد
 
کلاس Client هم به پورت لیستن شده وصل میشد.
 
ست
 
تفاوت این دو کلاس فقط در سورسهایه پایین می باشد
 
 
 
کد PHP:
 server=new ServerSocket(12345,100);  
کد PHP:
client=new Socket(InetAddress.getByName(chatServer),12345);  
 
 
سورس اولی پورت رو در حالت لیستن قرار میدهد
 
 
سورس دومی به پورت لیستن شده وصل میشود البته با در نظر گرفتن Ip
که بصورت آرگومان براش فرستاده ایم
 

 

ترکی زبان قربون صدقه رفتنه داریم که: گوزلرین گیله‌سین قاداسین آلیم که یعنی درد و بلای مردمک چشات به جونم …!.

دوشنبه 21 اردیبهشت 1394  3:06 AM
تشکرات از این پست
siryahya
siryahya
کاربر طلایی1
تاریخ عضویت : اسفند 1389 
تعداد پست ها : 158652
محل سکونت : ▂▃▄▅▆▇█Tabriz█▇▆▅▄▃▂

پاسخ به:..:: آموزش جامع سوکت نویسی با زبان جاوا ::..

کلاس ClientTest
 
 
 
از این کلاس هم برا Run کردن کلاس کلاینتمون استفاده می کنیم  
 
 
کد PHP:
import javax.swing.*; 
 
public class ClientTest { 
 
    public static void main(String[] args) throws Exception 
    { 
 
        Client1 server=new Client1("127.0.0.1"); 
            server.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
                server.setVisible(true); 
             server.setLocation(150,130); 
           server.setSize(300,150); 
         server.runClient(); 
    } 
}  

 

ترکی زبان قربون صدقه رفتنه داریم که: گوزلرین گیله‌سین قاداسین آلیم که یعنی درد و بلای مردمک چشات به جونم …!.

دوشنبه 21 اردیبهشت 1394  3:06 AM
تشکرات از این پست
siryahya
siryahya
کاربر طلایی1
تاریخ عضویت : اسفند 1389 
تعداد پست ها : 158652
محل سکونت : ▂▃▄▅▆▇█Tabriz█▇▆▅▄▃▂

پاسخ به:..:: آموزش جامع سوکت نویسی با زبان جاوا ::..

تابع دوم از کلاس Server
 
کد PHP:
 
        public void waitForPacket() 
        { 
            while(true) 
            { 
                try{ 
 
                    byte[] data=new byte[100]; 
                        DatagramPacket recievePacket=new DatagramPacket(data,data.length); 
                        socket.receive(recievePacket); 
  displayMessage("\nPacket Received: "+"\nFrom Host: "+recievePacket.getAddress()+"\nHost Port: "+recievePacket.getPort()+"\nLenght: "+recievePacket.getLength()+"\nContaining:\n\t"+new String(recievePacket.getData(),0,recievePacket.getLength())); 
        sendPacketToClient(recievePacket); 
                } 
            catch(IOException e) 
            { 
                displayMessage(e+"\n"); 
            e.printStackTrace(); 
            } 
 
            } 
        }  
 
این متد از یک حلقه بی نهایت استفاده می کند
تا منتظر پاکتهای وارده به سرویس دهنده باشد. در این متد همچنین
از یک DatagramPacket استفاده کرده ایم که بتواند پاکتهای دریافتی را ذخیره کند.
سازنده DatagramPacket به همین منظور دو آرگومان دریافت می کند،
که یکیش آرایه بایتی می باشد که داده ها در آن ذخیره خواهند شد
و دیگریش طول آرایه را در برمیگیرد.
 
 
 
کد PHP:
 socket.receive(recievePacket);  
در قطعه کد بالا زا یک متد receive استفاده کرده ایم .
این متد منتظر رسیدت یک پاکت به سرویس دهنده می باشد.متد
receive تا زمان رسیدن یک پاکت بلوکه می شود،
سپس آرگومان رو در یک DatagramPacket خود ذخیره می کند.
در چنین مواقعی اگر خطائی در زمان دریافت یک پاکت رخ دهد
متد یک استثناء به راه می اندازد که باعث مختل کردن ارسال و دریافت
پاکن ها می شود که دوباره با استفاده از فرمان try این رویداد رو از قبل
بلوکه کردیم.
 
 
نکته :
این رو بیاد داشته باشید همیشه تمام رویدادهایی که قرار است در برنامه هایتان 
اتفاق بیفتد رو از قبل پیش بینی و تا جای امکان بلوکه کنید.

 

ترکی زبان قربون صدقه رفتنه داریم که: گوزلرین گیله‌سین قاداسین آلیم که یعنی درد و بلای مردمک چشات به جونم …!.

دوشنبه 21 اردیبهشت 1394  3:08 AM
تشکرات از این پست
siryahya
siryahya
کاربر طلایی1
تاریخ عضویت : اسفند 1389 
تعداد پست ها : 158652
محل سکونت : ▂▃▄▅▆▇█Tabriz█▇▆▅▄▃▂

پاسخ به:..:: آموزش جامع سوکت نویسی با زبان جاوا ::..

در متد بالا یه سری 
توابع بودن که جا داره یه کم در موردشون توضیح بدم
 
 
 
زمانی که ما پاکت رو دریافت می کنیم یا ارسال می کنیم
هر دو طرف یعنی کلاینت و سرور برا شناسایی اینکه این پاکتها
از چه پورتی ،با چه سایزی در چه تاریخی
و یه سری مشخصات دیگر ارسال شده اند می توانند از یک سری
توابع وکلاس از پیش تعریف شده در خود پکیجهای جاوا استفاده کنند
که این کلاسها و پکیجها نه تنها باعث سرعت ایجاد برنامه بلکه باعث انعطاف پذیر
کردن بیشتر برنامه در شرایط خاص میشوند.
 
کد PHP:
 
تعدادی از سورسهای بالا همراه با توضیح  :73:
 
1 - recievePacket.getAddress()
 
2- recievePacket.getPort()
 
3- recievePacket.getLength()
 
4- recievePacket.getData()
 
 
1- بدست آوردن آدرس هر دو طرف
 
2- بدست آوردن شماره پورتی که پاکتها رو دارد اسال یا قرار است دریافت کند.
 
3- بدست آوردن اندازه پاکتها
 
4- بدست آوردن تاریخ ارسال یا دریافت پکتها  
 
 
هنوزم این امکان هستش که ما برناممون رو از این هم که هست
پیشرفته تر بکنیم ولی کم کم اگه الان همه چیز رو بگم شاید دوستان دچار سر در گمی بشن.
 

 

ترکی زبان قربون صدقه رفتنه داریم که: گوزلرین گیله‌سین قاداسین آلیم که یعنی درد و بلای مردمک چشات به جونم …!.

دوشنبه 21 اردیبهشت 1394  3:08 AM
تشکرات از این پست
siryahya
siryahya
کاربر طلایی1
تاریخ عضویت : اسفند 1389 
تعداد پست ها : 158652
محل سکونت : ▂▃▄▅▆▇█Tabriz█▇▆▅▄▃▂

پاسخ به:..:: آموزش جامع سوکت نویسی با زبان جاوا ::..

تابع سوم از کلاس Server
 
 
 
کد PHP:
  private void sendPacketToClient(DatagramPacket receiv) throws IOException 
        { 
            displayMessage("\n\nEcho data to client..."); 
         DatagramPacket sendPacket=new DatagramPacket(receiv.getData(),receiv.getLength(),receiv.getAddress(),receiv.getPort()); 
            socket.send(receiv); 
 
            displayMessage("Packet send\n"); 
    
        }  
از این متد برای ایجاد یک پاکت جدید و ارسال آن به 
سرویس گیرنده استفاده میشود. ایم متد یک DattagramPacket 
و چهار آرگومان به سازنده خود ارسال می کند.
آرگومان اول مشخص کننده آرایه بایتی برای ارسال است.
آرگومان دوم مشخص کننده تعداد بایتها برای ارسال است.
آرگومان سوم مشخص کننده آدرس اینترنتی کامپیوتر است که پاکت ارسال خواهد شد.
آرگومان چهارم هم مشخص کننده پورتی است که منتظر دریافت پاکتهاست.
 
 
کد PHP:
socket.send(receiv);  
قطعه کد بالا هم مبادرت به ارسال پاکتها بر روی شبکه می کند.
 
 
 
متد send از DatagramSocket در صورت بروز مشکل در زمان ارسال یک پاکت
یک IOException به راه می اندازد که دوباره این را هم بلوکه کرده ایم
تا برنامه با دقت بالا به فعالیت خودش ادامه دهد .

 

ترکی زبان قربون صدقه رفتنه داریم که: گوزلرین گیله‌سین قاداسین آلیم که یعنی درد و بلای مردمک چشات به جونم …!.

دوشنبه 21 اردیبهشت 1394  3:08 AM
تشکرات از این پست
siryahya
siryahya
کاربر طلایی1
تاریخ عضویت : اسفند 1389 
تعداد پست ها : 158652
محل سکونت : ▂▃▄▅▆▇█Tabriz█▇▆▅▄▃▂

پاسخ به:..:: آموزش جامع سوکت نویسی با زبان جاوا ::..

کلاس همراه با تابع اصلی برای تست کلاس Server
 
 
کد PHP:
import javax.swing.*; 
 
public class ServerTest { 
 
    public static void main(String[] args) throws InterruptedException 
    { 
        Server server=new Server(); 
         
            server.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
             
                server.waitForPacket(); 
    } 
}  

 

ترکی زبان قربون صدقه رفتنه داریم که: گوزلرین گیله‌سین قاداسین آلیم که یعنی درد و بلای مردمک چشات به جونم …!.

دوشنبه 21 اردیبهشت 1394  3:08 AM
تشکرات از این پست
siryahya
siryahya
کاربر طلایی1
تاریخ عضویت : اسفند 1389 
تعداد پست ها : 158652
محل سکونت : ▂▃▄▅▆▇█Tabriz█▇▆▅▄▃▂

پاسخ به:..:: آموزش جامع سوکت نویسی با زبان جاوا ::..

سورس کلاس Server بع صورت کامل
 
 
 
کد PHP:
 
import java.io.IOException; 
import java.net.DatagramPacket; 
import java.net.DatagramSocket; 
import java.net.SocketException; 
import java.awt.*; 
import javax.swing.*; 
 
public class Server extends JFrame{ 
    private JTextArea displayArea; 
        private DatagramSocket socket; 
 
        public Server() 
        { 
            super("Server"); 
            displayArea=new JTextArea(); 
            add(new JScrollPane(displayArea),BorderLayout.CENTER); 
            setSize(400,300); 
            setVisible(true); 
 
            try{ 
 
                socket=new DatagramSocket(5000); 
            } 
                catch(SocketException exe) 
                { 
                exe.printStackTrace(); 
                } 
 
        } 
        /////////////////////////////////////////////////////////// 
        public void waitForPacket() 
        { 
            while(true) 
            { 
                try{ 
 
                    byte[] data=new byte[100]; 
                        DatagramPacket recievePacket=new DatagramPacket(data,data.length); 
                        socket.receive(recievePacket); 
  displayMessage("\nPacket Received: "+"\nFrom Host: "+recievePacket.getAddress()+"\nHost Port: "+recievePacket.getPort()+"\nLenght: "+recievePacket.getLength()+"\nContaining:\n\t"+new String(recievePacket.getData(),0,recievePacket.getLength())); 
        sendPacketToClient(recievePacket); 
                } 
            catch(IOException e) 
            { 
                displayMessage(e+"\n"); 
            e.printStackTrace(); 
            } 
 
            } 
        } 
        ////////////////////////////////////////////////////////////////////// 
 
        private void sendPacketToClient(DatagramPacket receiv) throws IOException 
        { 
            displayMessage("\n\nEcho data to client..."); 
         DatagramPacket sendPacket=new DatagramPacket(receiv.getData(),receiv.getLength(),receiv.getAddress(),receiv.getPort()); 
            socket.send(receiv); 
 
            displayMessage("Packet send\n"); 
    
        } 
/////////////////////////////////////////////////////////////////////// 
        private void displayMessage(final String message) 
        { 
            SwingUtilities.invokeLater( 
 
                    new Runnable() 
            { 
                public void run() 
                { 
                    displayArea.append(message); 
                } 
            } 
                    ); 
 
        } 
 
}  

 

ترکی زبان قربون صدقه رفتنه داریم که: گوزلرین گیله‌سین قاداسین آلیم که یعنی درد و بلای مردمک چشات به جونم …!.

دوشنبه 21 اردیبهشت 1394  3:08 AM
تشکرات از این پست
دسترسی سریع به انجمن ها