نمایش نتایج 1 تا 37 از 37

نام تاپیک: چت روم با استفاده از RMI

  1. #1

    چت روم با استفاده از RMI

    سلام
    من یه برنامهٔ chatroom بر اساس rmi دارم که می‌خوام یون رو با eclipse اجراش کنم
    اگه کسی‌ راهنمایی در این خصوص بکنه خیلی‌ ممنون میشم
    با تشکر
    آخرین ویرایش به وسیله javarmi : پنج شنبه 27 بهمن 1390 در 22:11 عصر

  2. #2
    کاربر دائمی آواتار buggen
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    zsh
    پست
    104

    نقل قول: chat room ba estefade az RMI va java

    سلام
    دقیقا مشکل شما چیه؟
    اجرا نمیشه (Exception میده؟) یا هنوز نتونستید پروژه رو ایمپورت کنید؟

  3. #3

    نقل قول: chat room ba estefade az RMI va java

    نقل قول نوشته شده توسط buggen مشاهده تاپیک
    سلام
    دقیقا مشکل شما چیه؟
    اجرا نمیشه (Exception میده؟) یا هنوز نتونستید پروژه رو ایمپورت کنید؟
    سلام،
    ممنون از پاسختون،
    مشکل اینجاست که من برنامه‌رو هم با cmd و هم با eclipse اجرا کردم و در هر ۲ مورد با errorِ کانکشن مواجه شدم
    من متن error رو براتون میذارم
    فکر می‌کنم rmiregistry اجرا نمی‌شه ولی‌ مطمئن نیستم در ضمن دایرکتوریِ jdk رو هم به path envirnment اضافه کردم
    من می‌تونم اگه بخواین فایل‌های برنامه‌رو براتون بفرستم (اگه میخواید لفطا آدرس ایمیلتون رو بدید من میفرستم به آدرس ایمیلتون)
    با تشکر از شما

    java.rmi.ConnectException: Connection refused to host: 192.168.251.238; nested e
    xception is:
    java.net.ConnectException: Connection timed out: connect
    at sun.rmi.transport.tcp.TCPEndpoint.newSocket(Unknow n Source)
    at sun.rmi.transport.tcp.TCPChannel.createConnection( Unknown Source)
    at sun.rmi.transport.tcp.TCPChannel.newConnection(Unk nown Source)
    at sun.rmi.server.UnicastRef.newCall(Unknown Source)
    at sun.rmi.registry.RegistryImpl_Stub.rebind(Unknown Source)
    at java.rmi.Naming.rebind(Unknown Source)
    at Server.main(Server.java:82)
    Caused by: java.net.ConnectException: Connection timed out: connect
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(Unknown Source)
    at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
    at java.net.PlainSocketImpl.connect(Unknown Source)
    at java.net.SocksSocketImpl.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at java.net.Socket.<init>(Unknown Source)
    at java.net.Socket.<init>(Unknown Source)
    at sun.rmi.transport.proxy.RMIDirectSocketFactory.cre ateSocket(Unknown S
    ource)
    at sun.rmi.transport.proxy.RMIMasterSocketFactory.cre ateSocket(Unknown S
    ource)
    ... 7 more

  4. #4
    کاربر دائمی آواتار buggen
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    zsh
    پست
    104

    نقل قول: chat room ba estefade az RMI va java

    سلام دوست عزیز
    ببخشید دیر جواب دادم مشکل JDK داشتم مراحل زیر رو انجام بده ببین مشکلت حل میشه
    برید به مسیر src و دستورات زیر رو بزنید (تو cmd یا terminal)

    1.javac ClientInterface.java
    2.javac Client.java
    3.javac ServerInterface.java
    4.javac Server.java
    5.rmic Server
    6.start rmiregistry
    7.java Server

    با این کار سرور start میشه بقیه تست ها تون رو انجام بدین اگه مشکلی بود در خدمتم

  5. #5

    نقل قول: chat room ba estefade az RMI va java

    نقل قول نوشته شده توسط buggen مشاهده تاپیک
    سلام دوست عزیز
    ببخشید دیر جواب دادم مشکل JDK داشتم مراحل زیر رو انجام بده ببین مشکلت حل میشه
    برید به مسیر src و دستورات زیر رو بزنید (تو cmd یا terminal)

    1.javac ClientInterface.java
    2.javac Client.java
    3.javac ServerInterface.java
    4.javac Server.java
    5.rmic Server
    6.start rmiregistry
    7.java Server

    با این کار سرور start میشه بقیه تست ها تون رو انجام بدین اگه مشکلی بود در خدمتم
    سلام،
    ممنونم من دقیقا همین command‌ها رو توی cmd اجرا کردم و همون error که متنش رو گذشتم رو گرفتم
    دقیقا دستوراتی که میزنم اینها هست :
    javac *
    rmic client
    rmic server
    start rmiregistry
    start java server
    start java GUI
    بعد از start rmiregisty یک پنجرهٔ جدید باز می‌شه و هیچ اتفاقی‌ نمیفته فکر می‌کنم rmiregistry اجرا نمی‌شه ولی‌ نمیدونم علتش چی‌ هست
    شما تونستید برنامه‌رو اجرا کنید؟

  6. #6

    نقل قول: chat room ba estefade az RMI va java

    در ضمن اگر منبعِ فارسیِ خوب در بارهٔ rmi داشته باشید خیلی‌ ممنون میشم
    (تعجب می‌کنم توی کل اینترنت فقط چند خط اون هم یک مقایسه بینِ rmi و corba بود!)

  7. #7
    کاربر دائمی آواتار buggen
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    zsh
    پست
    104

    نقل قول: chat room ba estefade az RMI va java

    کلاس های کامپایل شده رو پاک کنید (اونایی که stub دارن)
    rmic client رو نباید بزنید فقط server
    start rmiregisty هم طبیعی هست فقط window رو نبندید
    وبعد سرور رو استارت کنید(java Server) (اول باید سرور اجرا بشه بعد کلاینت ها)
    من از این مرحله به بعد رو نرفتم (تست کلاینت ها رو انجام ندادم) ولی شما تست کنید اگه مشکلی بود در خدمتم

    یه نکته دیگه این که مشکل او اکسپشن بخاطر rmiregisty هست اگر درست انجام بشه اررور میره (حتما وقتی تو دایرکتری کلاس های کامپایل شدخ هستید rmiregistrty رو انجام بدید )

  8. #8

    نقل قول: chat room ba estefade az RMI va java

    نقل قول نوشته شده توسط buggen مشاهده تاپیک
    کلاس های کامپایل شده رو پاک کنید (اونایی که stub دارن)
    rmic client رو نباید بزنید فقط server
    start rmiregisty هم طبیعی هست فقط window رو نبندید
    وبعد سرور رو استارت کنید(java Server) (اول باید سرور اجرا بشه بعد کلاینت ها)
    من از این مرحله به بعد رو نرفتم (تست کلاینت ها رو انجام ندادم) ولی شما تست کنید اگه مشکلی بود در خدمتم

    یه نکته دیگه این که مشکل او اکسپشن بخاطر rmiregisty هست اگر درست انجام بشه اررور میره (حتما وقتی تو دایرکتری کلاس های کامپایل شدخ هستید rmiregistrty رو انجام بدید )
    rmitest.jpg
    دقیقا همون error رو داد

  9. #9
    کاربر دائمی آواتار buggen
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    zsh
    پست
    104

    نقل قول: chat room ba estefade az RMI va java

    یه فرقی که من دیدم سر 192.168.251.238:host هست
    برای من زده 127.0.0.1
    بزارید یکم سزچ می کنم ببینم میتونم بفهم مشکل کجاست

  10. #10

    نقل قول: chat room ba estefade az RMI va java

    نقل قول نوشته شده توسط buggen مشاهده تاپیک
    یه فرقی که من دیدم سر 192.168.251.238:host هست
    برای من زده 127.0.0.1
    بزارید یکم سزچ می کنم ببینم میتونم بفهم مشکل کجاست
    ممنون
    معمولاً 127.0.0.1 برای تستِ کارتِ شبکه هست (loop back)
    در هر صورت ممنونم اگه راهنمایی کنید

  11. #11
    کاربر دائمی آواتار buggen
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    zsh
    پست
    104

    نقل قول: chat room ba estefade az RMI va java

    بله می دونم ولی rmiregistry رو 127.0.0.1 هست
    کدی که گذاشتم رو جایگزین Server.java کنید و مراحل رو تکرار کنید امیدوارم مشکلتون حل بشه



    import java.rmi.Naming;
    import java.rmi.RemoteException;
    import java.rmi.server.UnicastRemoteObject;
    import java.util.ArrayList;
    import java.rmi.registry.Registry;
    import java.rmi.registry.LocateRegistry;

    /**
    * This class implements the interface ServerInterface and extends the class
    * UnicastRemoteObject. Its constructor and member functions login and
    * broadcast can be accessed remotely.
    * @autor Matthias Braunhofer
    */
    public class Server extends UnicastRemoteObject implements ServerInterface {

    /**
    * This ArrayList stores a remote reference for each currently logged in client as
    * well as its nickname and is used for broadcasting a message, when a client
    * invokes the remotely accessible method login.
    */
    protected ArrayList<ClientInterface> clients = new ArrayList<ClientInterface>();

    /**
    * This constructor is used for creating a remote object of type Server. It
    * throws a RemoteException if the object handle cannot be constructed.
    */
    public Server() throws RemoteException {
    }

    /**
    * Implementation of the remotely invocable method. If a client invokes this
    * method then all other currently logged in clients get a notification
    * that a new user has joined the chat. This is done by a remote call of the
    * method getMessage which is defined for the Client object. A remote reference
    * to the new client is added to the ArrayList.
    */
    public void login(ClientInterface client, String nickname) throws RemoteException {
    broadcastMessage("--> " + nickname + " is entering the chatroom", "");
    clients.add(client);
    }

    /**
    * This method is a remote method which is used for broadcasting an incoming message
    * and the nickname of its sender to all currently logged in clients. This
    * broadcasting is done by a remote call of the method getMessage which is
    * defined for a client object. The references to such clients are obtained from
    * the ArrayList which stores a remote reference to each currently logged in client.
    */
    public void broadcastMessage(String message, String nickname) throws RemoteException {
    for (int i = 0; i < clients.size(); i++) {
    ClientInterface c = clients.get(i);
    try {
    c.getMessage(message, nickname);
    } catch (RemoteException e) {
    /**
    * If a client is not accessible, then it is removed from
    * the ArrayList and the index i is decremented because
    * all other clients go down one place
    */
    logout(c);
    i = i - 1;
    }
    }
    }

    /**
    * This method is a local method which is used for removing a connection
    * from the ArrayList of all connections.
    */
    public void logout(ClientInterface client) {
    clients.remove(client);
    }

    /**
    * This main method registers a remote accessible Server object by invoking the
    * rebind method on the class Naming. The name of this object is "Server". This
    * means that all clients which want to get a reference to this object have to
    * specify this name in the lookup method.
    */
    public static void main(String[] args) {
    try {
    Registry registry = LocateRegistry.getRegistry("127.0.0.1");
    registry.bind("Server", new Server());
    System.out.println("Server is ready");
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    }



  12. #12

    نقل قول: chat room ba estefade az RMI va java

    ممنونم این دفعه مشکل حل شد فقط اگه ممکن بگید دقیقا چی‌ کار کردید و در ضمن بعد از این مرحله دقیقا باید چی‌ کار کنم آیا باید بقیهٔ مراحل رو در یک cmd دیگه ادامه بدم؟
    با تشکر فراوان
    rmitest2.jpg

  13. #13
    کاربر دائمی آواتار buggen
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    zsh
    پست
    104

    نقل قول: chat room ba estefade az RMI va java

    خواهش میکنم
    rmiregistry روی 127.0.0.1 بایند شده ولی سرور (نمیدونم چرا) به یه ip دیگه (جایی خوندم مربوط به تنظیمات هاست در سیستم عامل میشه)
    و من با اضافه کردن

    Registry registry = LocateRegistry.getRegistry("127.0.0.1");


    مجبورش کردم از 127.0.0.1 استفاده کنه

    مرحله دقیقا باید چی‌ کار کنم آیا باید بقیهٔ مراحل رو در یک cmd دیگه ادامه بدم؟
    بله تست کنید اگه مشکلی بود در خدمتم (خودم تست نکردم مرحله بعد رو)

  14. #14

    نقل قول: chat room ba estefade az RMI va java

    نقل قول نوشته شده توسط buggen مشاهده تاپیک
    خواهش میکنم
    rmiregistry روی 127.0.0.1 بایند شده ولی سرور (نمیدونم چرا) به یه ip دیگه (جایی خوندم مربوط به تنظیمات هاست در سیستم عامل میشه)
    و من با اضافه کردن

    Registry registry = LocateRegistry.getRegistry("127.0.0.1");


    مجبورش کردم از 127.0.0.1 استفاده کنه



    بله تست کنید اگه مشکلی بود در خدمتم (خودم تست نکردم مرحله بعد رو)
    ممنون
    من یک cmd دیگه باز کردم و این command رو توش نوشتم
    rmic Client
    java GUI
    ولی‌ باز هم همون error قبلی‌ رو میده!
    فکر کنم Registry registry = LocateRegistry.getRegistry("127.0.0.1"); رو باید جای دیگه هم اضافه کرد
    ممنون میشم اگه راهنمایی کنید
    rmitest4.jpg

  15. #15
    کاربر دائمی آواتار buggen
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    zsh
    پست
    104

    نقل قول: chat room ba estefade az RMI va java

    خوب اینم از GUI.java
    فقط دوست عزیز این نکته رو بخاطر داشته باش که تنظیمات host رو مستقیم تو کد گفتیم بهتره تو کانفیگ باشه یا از فرم بگیره (یعنی اون تکست فیلدی که هاست رو میپرسه کاری نمی کنه الان!)




    import java.awt.event.KeyAdapter;
    import java.awt.event.KeyEvent;
    import java.awt.event.WindowListener;
    import java.net.MalformedURLException;
    import java.rmi.Naming;
    import java.rmi.NotBoundException;
    import java.rmi.RemoteException;

    import javax.swing.JOptionPane;
    import javax.swing.JScrollPane;
    import javax.swing.JTextArea;
    import javax.swing.JTextField;
    import javax.swing.WindowConstants;
    import java.rmi.registry.Registry;
    import java.rmi.registry.LocateRegistry;

    /**
    * This code was edited or generated using CloudGarden's Jigloo
    * SWT/Swing GUI Builder, which is free for non-commercial
    * use. If Jigloo is being used commercially (ie, by a corporation,
    * company or business for any purpose whatever) then you
    * should purchase a license for each developer using Jigloo.
    * Please visit www.cloudgarden.com for details.
    * Use of Jigloo implies acceptance of these licensing terms.
    * A COMMERCIAL LICENSE HAS NOT BEEN PURCHASED FOR
    * THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED
    * LEGALLY FOR ANY CORPORATE OR COMMERCIAL PURPOSE.
    * @autor Matthias Braunhofer
    */
    public class GUI extends javax.swing.JFrame {
    private Client client; //reference to the local Client object
    private ServerInterface server; //reference to the remote Server object
    private static String nickname;
    private static String host;
    private static JTextArea History;
    private JTextField Message;
    private JScrollPane jScrollPaneHistory;

    /**
    * Auto-generated main method to display this JFrame
    */
    public static void main(String[] args) {
    host = JOptionPane.showInputDialog("Enter the host of the chatserver", "localhost");
    nickname = JOptionPane.showInputDialog("Enter your nickname");
    if (host != null && nickname != null && !nickname.equals("")) {
    try {
    GUI inst = new GUI();
    inst.setVisible(true);
    } catch (Exception e) {
    e.printStackTrace();
    System.exit(0);
    }
    }
    else System.exit(0);
    }

    /**
    * Inside this constructor we invoke the lookup method on the class Naming for
    * receiving a reference to a remote Server object. This remote reference
    * is used for invoking the remote method login, which adds a reference to this
    * Client object to an existing list of other clients. The remote Server object
    * is also used for broadcasting messages.
    */
    public GUI() throws MalformedURLException, RemoteException, NotBoundException {
    super();
    Registry registry = LocateRegistry.getRegistry("127.0.0.1");
    server = (ServerInterface)registry.lookup("Server");
    client = new Client();
    server.login(client, nickname);
    initGUI();
    }

    private void initGUI() {
    try {
    {
    jScrollPaneHistory = new JScrollPane();
    getContentPane().add(jScrollPaneHistory);
    jScrollPaneHistory.setBounds(7, 7, 378, 203);
    jScrollPaneHistory.setHorizontalScrollBarPolicy(JS crollPane.HORIZONTAL_SCROLLBAR_NEVER);
    {
    History = new JTextArea();
    History.setLineWrap(true);
    History.setEditable(false);
    jScrollPaneHistory.setViewportView(History);
    }
    }
    {
    Message = new JTextField();
    getContentPane().add(Message);
    Message.setBounds(7, 217, 378, 42);
    Message.addKeyListener(new KeyAdapter() {
    public void keyReleased(KeyEvent evt) {
    MessageKeyPressed(evt);
    }
    });
    }
    setDefaultCloseOperation(WindowConstants.DISPOSE_O N_CLOSE);
    getContentPane().setLayout(null);
    this.setTitle("MyRMIChat - " + nickname);
    this.setResizable(false);
    pack();
    setSize(400, 300);
    } catch (Exception e) {
    e.printStackTrace();
    }
    }

    /**
    * This method is called by the getMessage method which is defined inside the
    * Client class. It simply writes a message and its sender to the TextArea field.
    * If the nickname is empty, then it means that a new client has joined the chat.
    */
    public static void showMessage(String message, String nickname) {
    if (!nickname.equals(""))
    History.append(nickname + ": " + message + "\n");
    else History.append(message + "\n");
    }

    /**
    * This method is called whenever the user presses the enter key. If the text field
    * is not empty, then we invoke the remote method broadcastMessage on the remote
    * Server object, which broadcasts the entered message to all other clients.
    */
    private void MessageKeyPressed(KeyEvent evt) {
    if (evt.getKeyCode() == KeyEvent.VK_ENTER && !Message.getText().equals("")) {
    try {
    server.broadcastMessage(Message.getText(), nickname);
    Message.setText("");
    } catch (RemoteException e) {
    e.printStackTrace();
    }
    }
    }
    }




    تست کن ببین مشکت حل میشه؟
    موفق باشی

  16. #16

    نقل قول: chat room ba estefade az RMI va java

    الان موقع کامپایل GUI.java این error رو میده
    rmitest5.jpg

  17. #17
    کاربر دائمی آواتار buggen
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    zsh
    پست
    104

    نقل قول: chat room ba estefade az RMI va java

    شرمنده موقع کپی کردن دستم خورده به space گویا
    این فایل رو بگیرید
    فایل های ضمیمه فایل های ضمیمه
    • نوع فایل: zip GUI.zip‏ (1.9 کیلوبایت, 15 دیدار)

  18. #18

    نقل قول: chat room ba estefade az RMI va java

    نقل قول نوشته شده توسط buggen مشاهده تاپیک
    شرمنده موقع کپی کردن دستم خورده به space گویا
    این فایل رو بگیرید
    ممنون
    ولی‌ متأسفانه باز هم همون error رو میده
    rmitest6.jpg

  19. #19
    کاربر دائمی آواتار buggen
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    zsh
    پست
    104

    نقل قول: chat room ba estefade az RMI va java

    دوست عزیز فک می کنم شما Client.java رو دو باره کامپایل کردید
    باید GUI.java رو کامپایل کنید
    البته من یه عذر خواهی بکنم چون پست دوم GUI.java رو کامپایل نکرده بودم (اگر بر اساس اون عمل کردید)
    و یک نکته دیگه من تست کردم کد رو اگه 127.0.0.1 رو عوض کنم (GUI.java) اکسپشن شما رو می گیرم

    امیدوارم مشکلتون حل بشه

  20. #20

    نقل قول: chat room ba estefade az RMI va java

    نقل قول نوشته شده توسط buggen مشاهده تاپیک
    دوست عزیز فک می کنم شما Client.java رو دو باره کامپایل کردید
    باید GUI.java رو کامپایل کنید
    البته من یه عذر خواهی بکنم چون پست دوم GUI.java رو کامپایل نکرده بودم (اگر بر اساس اون عمل کردید)
    و یک نکته دیگه من تست کردم کد رو اگه 127.0.0.1 رو عوض کنم (GUI.java) اکسپشن شما رو می گیرم

    امیدوارم مشکلتون حل بشه
    ممنونم
    حقیقتش من یه مقدار گیج شدم می‌شه دقیقا بگید بعد از run شدن سرور باید به ترتیب چه command هایی رو بنویسم
    من به این ترتیب میرم

    1)javac clientinterface.java
    2)javac client.java
    3)javac serverinterface.java
    4)javac server.java
    5)rmic server
    6)start rmiregistry
    7)java server

    بعد یک cmd دیگه باز می‌کنیم و در cmd جدید این cammand‌ها رو می‌نویسیم

    8)rmic client
    9)java GUI

    و تمام

    آیا این روال درسته؟
    ممنون از رهنماییتون

  21. #21
    کاربر دائمی آواتار buggen
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    zsh
    پست
    104

    نقل قول: chat room ba estefade az RMI va java

    خیلی حساسیت روی ترتیب اینها نیست فقط چند مرحله مهمه حالا شما به این ترتیب برید امیدوارم مشکلتون حل شه
    1)javac ClientInterface.java
    2)javac Client.java
    3)javac ServerInterface.java
    4)javac Server.java
    5)javac GUI.java
    6)rmic Server
    7)start rmiregistry
    8)java Server

    بعد یک cmd دیگه باز کنید

    9)java GUI

  22. #22

    نقل قول: chat room ba estefade az RMI va java

    نقل قول نوشته شده توسط buggen مشاهده تاپیک
    خیلی حساسیت روی ترتیب اینها نیست فقط چند مرحله مهمه حالا شما به این ترتیب برید امیدوارم مشکلتون حل شه
    1)javac ClientInterface.java
    2)javac Client.java
    3)javac ServerInterface.java
    4)javac Server.java
    5)javac GUI.java
    6)rmic Server
    7)start rmiregistry
    8)java Server

    بعد یک cmd دیگه باز کنید

    9)java GUI
    ممنون
    من دقیقا همین مراحل رو میرم ولی‌ متأسفانه همون ارور connection refused رو میگیرم
    (بعد از java GUI)
    و یه چیز دیگه اینکه نمیدونم چرا دو تا فایل GUI.class میسازه یکی‌ GUI.class و یکی‌ GUI$1.class

  23. #23
    کاربر دائمی آواتار buggen
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    zsh
    پست
    104

    نقل قول: chat room ba estefade az RMI va java

    اینکه دو تا فایله چیز مهمی نیست بخاطر innerclass هست
    این قسمت

    Message.addKeyListener(new KeyAdapter() {
    public void keyReleased(KeyEvent evt) {
    MessageKeyPressed(evt);
    }
    });
    }


    دقیقا اینجا

    new KeyAdapter()

    ولی راجب اینکه چرا درست نشده ایده ای ندارم دوتا فایل کامپایل شده میذارم (GUI.class با دو host d یک 127.0.0.1 و دیگری 192.168.20.1) یکی باید اکسپشن بده
    فقط ممکنه یکم طول بکشه تا اکسپشن بده!
    اگه هر دو اکسپشن داد دقت کنید host رو چی زده (نباید یکی باشه)
    واینکه فایل ها رو تو فولدر برنامه کپی کنید و فقط مراحل 7 به بعد رو انجام بدید
    فایل های ضمیمه فایل های ضمیمه

  24. #24

    نقل قول: chat room ba estefade az RMI va java

    نقل قول نوشته شده توسط buggen مشاهده تاپیک
    اینکه دو تا فایله چیز مهمی نیست بخاطر innerclass هست
    این قسمت

    Message.addKeyListener(new KeyAdapter() {
    public void keyReleased(KeyEvent evt) {
    MessageKeyPressed(evt);
    }
    });
    }


    دقیقا اینجا

    new KeyAdapter()

    ولی راجب اینکه چرا درست نشده ایده ای ندارم دوتا فایل کامپایل شده میذارم (GUI.class با دو host d یک 127.0.0.1 و دیگری 192.168.20.1) یکی باید اکسپشن بده
    فقط ممکنه یکم طول بکشه تا اکسپشن بده!
    اگه هر دو اکسپشن داد دقت کنید host رو چی زده (نباید یکی باشه)
    واینکه فایل ها رو تو فولدر برنامه کپی کنید و فقط مراحل 7 به بعد رو انجام بدید
    ممنون
    متأسفانه در هر دو مورد error داد
    برای gui1
    rmi7.jpg
    برای gui2
    rmitest8.jpg
    اگه اشتباه نکنم 127.0.01 برای GUI عمل نمی‌کنه
    بعد از java GUI یک پنجره باز می‌شه که در اون هم به جای localhost مینویسم 127.0.01 ولی‌ اون هم تأثیری نداره یعنی‌ از 127.0.01 برای استفاده نمی‌کنه

  25. #25
    کاربر دائمی آواتار buggen
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    zsh
    پست
    104

    نقل قول: chat room ba estefade az RMI va java

    عجیبه !
    اگه اشتباه نکنم 127.0.01 برای GUI عمل نمی‌کنه
    دقیقا ولی چرا؟
    بعد از java GUI یک پنجره باز می‌شه که در اون هم به جای localhost مینویسم 127.0.01 ولی‌ اون هم تأثیری نداره
    اون هیچ تاثیری نداره بخاطر کاریه که من کردم !

    اگه میشه تنظیمات host سیستم عاملتون رو بزاید اینجا یه نگاهی بندازم
    x:\windows\system32\drivers\etc\hosts
    با text editor بازش کنید محتویاتش رو بزارید اینجا
    البته این فایل hidden هست

    ممنون موفق باشید

  26. #26

    نقل قول: chat room ba estefade az RMI va java

    نقل قول نوشته شده توسط buggen مشاهده تاپیک
    عجیبه !

    دقیقا ولی چرا؟

    اون هیچ تاثیری نداره بخاطر کاریه که من کردم !

    اگه میشه تنظیمات host سیستم عاملتون رو بزاید اینجا یه نگاهی بندازم
    x:\windows\system32\drivers\etc\hosts
    با text editor بازش کنید محتویاتش رو بزارید اینجا
    البته این فایل hidden هست

    ممنون موفق باشید
    rmilocalhost.jpg
    ممنون
    localhost که ظاهراً 127.0.01 هست
    خیلی‌ دوست دارم بدونم علتش چیه؟!
    البته گویا text‌ای که من گذشتم توی comment هست نه؟

  27. #27
    کاربر دائمی آواتار buggen
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    zsh
    پست
    104

    نقل قول: chat room ba estefade az RMI va java

    بله علامت (#) توی این فایل کامنت هست
    شما کامنت 2 خط آخر رو بردارید یه بار دیگه امتحان کنید شاید اتفاقی بیفته (البته من فقط امیدوارم مطمئن نیستم)
    آخرین ویرایش به وسیله buggen : دوشنبه 01 اسفند 1390 در 23:00 عصر

  28. #28

    نقل قول: چت روم با استفاده از RMI

    PING TO 192.168.251.238!
    یک بار و برای همیشه می خواهم چیزهای زیادی ندانم.فرزانگی نیز برای شناخت , محدودیت می آفریند .(پندها وپیکان ها – فردریش نیچه)

  29. #29

    نقل قول: chat room ba estefade az RMI va java

    نقل قول نوشته شده توسط buggen مشاهده تاپیک
    بله علامت (#) توی این فایل کامنت هست
    شما کامنت 2 خط آخر رو بردارید یه بار دیگه امتحان کنید شاید اتفاقی بیفته (البته من فقط امیدوارم مطمئن نیستم)
    باز هم ممنونم
    متأسفانه من بعد از تغییر فایل hosts وقتی‌ می‌خوام save ش کنم این error رو میگیرم
    rmitest9.jpg
    شما تونستید برنامه‌رو اجرا کنید؟ می‌خوام مطمئن بشم که برنامه هیچ مشکلی‌ نداره
    باز هم ازتون ممنونم

  30. #30

    نقل قول: چت روم با استفاده از RMI

    نقل قول نوشته شده توسط mazdadoost مشاهده تاپیک
    PING TO 192.168.251.238!
    من به 192.168.251.238 ping کردم و این هم تصویرش هست
    ممنونم اگر راهنمائی کنید
    rmitest91.jpg

  31. #31
    کاربر دائمی آواتار buggen
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    zsh
    پست
    104

    نقل قول: chat room ba estefade az RMI va java

    نقل قول نوشته شده توسط javarmi مشاهده تاپیک
    باز هم ممنونم
    متأسفانه من بعد از تغییر فایل hosts وقتی‌ می‌خوام save ش کنم این error رو میگیرم
    یک بار text editor رو با run as administrator باز کنید (اگه این کار رو نکردید)
    اگه نشد روش زیر رو چک کنید

    c:
    cd \windows\system32\drivers\etc
    attrib -r hosts
    notepad hosts
    attrib +r hosts

    شما تونستید برنامه‌رو اجرا کنید؟ می‌خوام مطمئن بشم که برنامه هیچ مشکلی‌ نداره
    باز هم ازتون ممنونم
    من تست کردم مشکلی نداشت (windows و linux) ولی با یه user حالا با چند تا یوزر تست می کنم تا خیالتون راحت بشه
    آخرین ویرایش به وسیله buggen : یک شنبه 07 اسفند 1390 در 02:57 صبح

  32. #32

    نقل قول: chat room ba estefade az RMI va java

    نقل قول نوشته شده توسط buggen مشاهده تاپیک
    خیلی حساسیت روی ترتیب اینها نیست فقط چند مرحله مهمه حالا شما به این ترتیب برید امیدوارم مشکلتون حل شه
    1)javac ClientInterface.java
    2)javac Client.java
    3)javac ServerInterface.java
    4)javac Server.java
    5)javac GUI.java
    6)rmic Server
    7)start rmiregistry
    8)java Server

    بعد یک cmd دیگه باز کنید

    9)java GUI
    ببخشید شما توی این دستوراتی که نوشتید rmic client نیست
    این اشکالی‌ نداره؟
    ممنون

  33. #33
    کاربر دائمی آواتار buggen
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    zsh
    پست
    104

    نقل قول: chat room ba estefade az RMI va java

    rmic client لازم نیست انجام بشه
    راجب اپن روش هم موقع past من اشتباه کرده بودم پست رو ویرایش کردم یه بار دیگه تست کنید (نقل قول رو هم اگه ویرایش کنید ممنون میشم)
    یه خواهشی هم دارم از شما که id من رو add کنید تا توی چت بهتون کمک کنم چون کارمون داره تست های صحیح و خطا میشه
    چون رو سیستم من این مشکل نیست نمی تونم راه قطعی برای حلش بگم شاید توی چت بتونیم مشکلو حل کنیم
    موفق باشید

  34. #34

    نقل قول: chat room ba estefade az RMI va java

    نقل قول نوشته شده توسط buggen مشاهده تاپیک
    rmic client لازم نیست انجام بشه
    راجب اپن روش هم موقع past من اشتباه کرده بودم پست رو ویرایش کردم یه بار دیگه تست کنید (نقل قول رو هم اگه ویرایش کنید ممنون میشم)
    یه خواهشی هم دارم از شما که id من رو add کنید تا توی چت بهتون کمک کنم چون کارمون داره تست های صحیح و خطا میشه
    چون رو سیستم من این مشکل نیست نمی تونم راه قطعی برای حلش بگم شاید توی چت بتونیم مشکلو حل کنیم
    موفق باشید
    سلام، بالاخره برنامه run شد البته دقیقا علت اون مشکل رو متوجه نشدم ...
    حالا فقط می‌خوام تمام message‌ها ذخیره بشند بنظرتون بهترین روش برای این کار چی‌ هست؟ البته باید بگم که من در جاوا در این زمینه قبلا کار نکردم
    باز هم ازتون ممنونم

  35. #35
    کاربر دائمی آواتار buggen
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    zsh
    پست
    104

    نقل قول: chat room ba estefade az RMI va java

    سلام
    چطور run شد رو یه سیستم دیگه ؟ اگر نه چه طور حل کردید ؟
    حالا فقط می‌خوام تمام message‌ها ذخیره بشند بنظرتون بهترین روش برای این کار چی‌ هست؟
    توی فایل یا دیتابیس مثلا ؟
    لبته باید بگم که من در جاوا در این زمینه قبلا کار نکردم
    من هم زیاد کار نکردم بیشتر J2EE کار کردم ولی اگه بتونم کمکتون میکنم

  36. #36

    نقل قول: chat room ba estefade az RMI va java

    من فقط دستور rmic client رو حذف کردم یعنی‌ اول زدم rmiregistry بعد در یک cmd دیگه زدم java server و در یک cmd دیگه دستور java GUI رو نوشتم حالا نمیدونم دقیقا علتش این بود یا نه
    در خصوص ذخیره message‌ها اگه توی یک فایل هم ذخیره شه کافیه
    فقط این برنامه برای ذخیرهٔ موقت message‌ها از یک متغیر به نام History استفاده کرده که از نوع JTextArea هست که فکر می‌کنم باید محتویات این متغیر رو در یک فایل text ذخیره کرد
    اما من در مورد نوع این متغیر (JTextArea ) و اینکه چه جوری می‌شه توی جاوا یک فایل text ساخت و توی اون نوشت و یا از اون خوند نمیدونم
    ممنون میشم اگه در این مورد هم راهنمائی کنید
    با تشکر

  37. #37
    کاربر دائمی آواتار buggen
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    zsh
    پست
    104

    نقل قول: chat room ba estefade az RMI va java

    خوب من فایل Server.java رو تغییر دادم ویه متود برای history گذاشتم توی تست من که مشکلی نداشت
    حالا خودتون هم تست کنید



    import java.io.FileNotFoundException;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.rmi.Naming;
    import java.rmi.RemoteException;
    import java.rmi.server.UnicastRemoteObject;
    import java.util.ArrayList;
    import java.rmi.registry.Registry;
    import java.rmi.registry.LocateRegistry;

    /**
    * This class implements the interface ServerInterface and extends the class
    * UnicastRemoteObject. Its constructor and member functions login and
    * broadcast can be accessed remotely.
    * @autor Matthias Braunhofer
    */
    public class Server extends UnicastRemoteObject implements ServerInterface {

    /**
    * This ArrayList stores a remote reference for each currently logged in client as
    * well as its nickname and is used for broadcasting a message, when a client
    * invokes the remotely accessible method login.
    */
    protected ArrayList<ClientInterface> clients = new ArrayList<ClientInterface>();

    /**
    * This constructor is used for creating a remote object of type Server. It
    * throws a RemoteException if the object handle cannot be constructed.
    */
    public Server() throws RemoteException {
    }

    /**
    * Implementation of the remotely invocable method. If a client invokes this
    * method then all other currently logged in clients get a notification
    * that a new user has joined the chat. This is done by a remote call of the
    * method getMessage which is defined for the Client object. A remote reference
    * to the new client is added to the ArrayList.
    */
    public void login(ClientInterface client, String nickname) throws RemoteException {
    broadcastMessage("--> " + nickname + " is entering the chatroom", "");
    clients.add(client);
    }

    /**
    * This method is a remote method which is used for broadcasting an incoming message
    * and the nickname of its sender to all currently logged in clients. This
    * broadcasting is done by a remote call of the method getMessage which is
    * defined for a client object. The references to such clients are obtained from
    * the ArrayList which stores a remote reference to each currently logged in client.
    */
    public void broadcastMessage(String message, String nickname) throws RemoteException {
    for (int i = 0; i < clients.size(); i++) {
    ClientInterface c = clients.get(i);
    try {

    writeHistory(message, nickname);

    c.getMessage(message, nickname);
    } catch (RemoteException e) {
    /**
    * If a client is not accessible, then it is removed from
    * the ArrayList and the index i is decremented because
    * all other clients go down one place
    */
    logout(c);
    i = i - 1;
    }
    }
    }

    /**
    * This method is a local method which is used for removing a connection
    * from the ArrayList of all connections.
    */
    public void logout(ClientInterface client) {
    clients.remove(client);
    }

    /**
    * This main method registers a remote accessible Server object by invoking the
    * rebind method on the class Naming. The name of this object is "Server". This
    * means that all clients which want to get a reference to this object have to
    * specify this name in the lookup method.
    */
    public static void main(String[] args) {
    try {
    Registry registry = LocateRegistry.getRegistry("127.0.0.1");
    registry.rebind("Server", new Server());
    System.out.println("Server is ready");
    } catch (Exception e) {
    e.printStackTrace();
    }
    }

    private void writeHistory(String message, String nickname) {
    FileWriter writer = null;
    try {
    writer = new FileWriter("history.txt",true);
    writer.write( nickname+" : " +message+"\n");
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }finally{
    try {
    writer.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }
    }



قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •