Forum Stats

  • 3,727,530 Users
  • 2,245,404 Discussions
  • 7,852,847 Comments

Discussions

NetBeans:Sending multiple Messages: Erroneous sym type: Sockect.close

User_AYF65
User_AYF65 Member Posts: 135 Red Ribbon
edited August 2016 in New To Java

Hi,

I made a program to send a message from a Server to a client on the same machine in NetBeans on a Button click. I used the following code in the button handler:

private void sendMsgButtonActionPerformed(java.awt.event.ActionEvent evt) {                                             

        // TODO add your handling code here:

        try{

        ServerSocket sSocket=new ServerSocket(800);

System.out.println("Server Started");

        Socket cSocket=sSocket.accept();

        PrintWriter writer=new PrintWriter(cSocket.getOutputStream());

writer.println("Hello I am the Server");

writer.flush();

writer.close();

Thread.currentThread().sleep(2000);

cSocket.close();

sSocket.close();

}catch(SocketTimeoutException s)

         {

System.out.println("Socket timed out!");

            break;

         }

catch(IOException e) {

e.printStackTrace();

        }

       

      }                           

It worked but when i pressed the button again to send another message , i got following error:

  1. java.net.BindException: Address already in use: JVM_Bind

                at java.net.DualStackPlainSocketImpl.bind0(Native Method)

                at java.net.DualStackPlainSocketImpl.socketBind(DualStackPlainSocketImpl.java:106)

                at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:387)

                at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:190)

                at java.net.ServerSocket.bind(ServerSocket.java:375)

                at java.net.ServerSocket.<init>(ServerSocket.java:237)

                at java.net.ServerSocket.<init>(ServerSocket.java:128)

                at ServerFrame.sendMsgButtonActionPerformed(ServerFrame.java:83)

                at ServerFrame.access$000(ServerFrame.java:13)

                at ServerFrame$1.actionPerformed(ServerFrame.java:39)

                at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)

                at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)

                at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)

                at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)

                at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)

                at java.awt.Component.processMouseEvent(Component.java:6535)

                at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)

                at java.awt.Component.processEvent(Component.java:6300)

                at java.awt.Container.processEvent(Container.java:2236)

                at java.awt.Component.dispatchEventImpl(Component.java:4891)

To handle this error, i created two methods: createConnection( ) & closeConnection( ) but now i am getting following error:

Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - Erroneous sym type: Sockect.close

  at Server2JFrame.closeConnection(Server2JFrame.java:44)

  at Server2JFrame.main(Server2JFrame.java:153)

Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: Uncompilable source code - cannot find symbol

  symbol:   class Sockect

  location: class Server2JFrame

  at Server2JFrame.<init>(Server2JFrame.java:24)

  at Server2JFrame$2.run(Server2JFrame.java:150)

  at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)

  at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)

  at java.awt.EventQueue.access$500(EventQueue.java:97)

  at java.awt.EventQueue$3.run(EventQueue.java:709)

  at java.awt.EventQueue$3.run(EventQueue.java:703)

  at java.security.AccessController.doPrivileged(Native Method)

  at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)

  at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)

  at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)

  at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)

  at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)

  at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)

  at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)

  at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

C:\Users\HP\AppData\Local\NetBeans\Cache\8.1\executor-snippets\run.xml:53: Java returned: 1

BUILD FAILED (total time: 2 seconds)

My complete code is:

import java.io.IOException;

import java.io.PrintWriter;

import java.net.ServerSocket;

import java.net.Socket;

import java.net.SocketTimeoutException;

/*

* To change this license header, choose License Headers in Project Properties.

* To change this template file, choose Tools | Templates

* and open the template in the editor.

*/

/**

*

* @author HP

*/

public class Server2JFrame extends javax.swing.JFrame {

    /**

     * Creates new form Server2JFrame

     */

    ServerSocket sSocket;

    Sockect cSocket;

    PrintWriter writer;

   

    public void createConnection( ){

         try{

         sSocket=new ServerSocket(800);

         System.out.println("Server Started");

         cSocket=sSocket.accept();     

        Thread.currentThread().sleep(2000);

       

        }catch(SocketTimeoutException s)

         {

            System.out.println("Socket timed out!");

            break;

         }

        catch(IOException e) {

            e.printStackTrace();

        }

    }

    public static void closeConnection(){

        cSocket.close();

        sSocket.close();

    }

           

    public Server2JFrame() {

        createConnection( );

        initComponents();

    }

    /**

     * This method is called from within the constructor to initialize the form.

     * WARNING: Do NOT modify this code. The content of this method is always

     * regenerated by the Form Editor.

     */

    @SuppressWarnings("unchecked")

    // <editor-fold defaultstate="collapsed" desc="Generated Code">                         

    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();

        sendMesgButton = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        sendMesgButton.setText("Send Multiple Message");

        sendMesgButton.addActionListener(new java.awt.event.ActionListener() {

            public void actionPerformed(java.awt.event.ActionEvent evt) {

                sendMesgButtonActionPerformed(evt);

            }

        });

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);

        jPanel1.setLayout(jPanel1Layout);

        jPanel1Layout.setHorizontalGroup(

            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

            .addGroup(jPanel1Layout.createSequentialGroup()

                .addGap(65, 65, 65)

                .addComponent(sendMesgButton)

                .addContainerGap(82, Short.MAX_VALUE))

        );

        jPanel1Layout.setVerticalGroup(

            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()

                .addContainerGap(42, Short.MAX_VALUE)

                .addComponent(sendMesgButton)

                .addGap(35, 35, 35))

        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());

        getContentPane().setLayout(layout);

        layout.setHorizontalGroup(

            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

            .addGroup(layout.createSequentialGroup()

                .addGap(87, 87, 87)

                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

                .addContainerGap(25, Short.MAX_VALUE))

        );

        layout.setVerticalGroup(

            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

            .addGroup(layout.createSequentialGroup()

                .addGap(79, 79, 79)

                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

                .addContainerGap(121, Short.MAX_VALUE))

        );

        pack();

    }// </editor-fold>                       

    private void sendMesgButtonActionPerformed(java.awt.event.ActionEvent evt) {                                              

        // TODO add your handling code here:

        writer=new PrintWriter(cSocket.getOutputStream());

        writer.println("Hello I am the Server");

        writer.flush();

        writer.close();

    }                                             

    /**

     * @param args the command line arguments

     */

    public static void main(String args[]) {

        /* Set the Nimbus look and feel */

        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">

        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.

         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html

         */

        try {

            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {

                if ("Nimbus".equals(info.getName())) {

                    javax.swing.UIManager.setLookAndFeel(info.getClassName());

                    break;

                }

            }

        } catch (ClassNotFoundException ex) {

            java.util.logging.Logger.getLogger(Server2JFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);

        } catch (InstantiationException ex) {

            java.util.logging.Logger.getLogger(Server2JFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);

        } catch (IllegalAccessException ex) {

            java.util.logging.Logger.getLogger(Server2JFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);

        } catch (javax.swing.UnsupportedLookAndFeelException ex) {

            java.util.logging.Logger.getLogger(Server2JFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);

        }

        //</editor-fold>

        /* Create and display the form */

        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {

                new Server2JFrame().setVisible(true);

            }

        });

        closeConnection( );

    }

    // Variables declaration - do not modify                    

    private javax.swing.JPanel jPanel1;

    private javax.swing.JButton sendMesgButton;

    // End of variables declaration                  

}

Myclient code is:

import java.net.*;

import java.io.*;

public class NewJFrame extends javax.swing.JFrame {

    /**

     * Creates new form NewJFrame

     */

    public NewJFrame() {

        initComponents();

    }

    /**

     * This method is called from within the constructor to initialize the form.

     * WARNING: Do NOT modify this code. The content of this method is always

     * regenerated by the Form Editor.

     */

    @SuppressWarnings("unchecked")

    // <editor-fold defaultstate="collapsed" desc="Generated Code">                         

    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();

        recvMesgButton = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        recvMesgButton.setText("Received Client Message");

        recvMesgButton.addActionListener(new java.awt.event.ActionListener() {

            public void actionPerformed(java.awt.event.ActionEvent evt) {

                recvMesgButtonActionPerformed(evt);

            }

        });

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);

        jPanel1.setLayout(jPanel1Layout);

        jPanel1Layout.setHorizontalGroup(

            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()

                .addContainerGap(37, Short.MAX_VALUE)

                .addComponent(recvMesgButton)

                .addGap(34, 34, 34))

        );

        jPanel1Layout.setVerticalGroup(

            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

            .addGroup(jPanel1Layout.createSequentialGroup()

                .addGap(66, 66, 66)

                .addComponent(recvMesgButton)

                .addContainerGap(71, Short.MAX_VALUE))

        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());

        getContentPane().setLayout(layout);

        layout.setHorizontalGroup(

            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

            .addGroup(layout.createSequentialGroup()

                .addGap(104, 104, 104)

                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

                .addContainerGap(87, Short.MAX_VALUE))

        );

        layout.setVerticalGroup(

            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

            .addGroup(layout.createSequentialGroup()

                .addGap(55, 55, 55)

                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

                .addContainerGap(85, Short.MAX_VALUE))

        );

        pack();

    }// </editor-fold>                       

    private void recvMesgButtonActionPerformed(java.awt.event.ActionEvent evt) {                                              

        // TODO add your handling code here:

       try{

       Socket toServer=new Socket(InetAddress.getLocalHost(),800);

       BufferedReader bufr=new BufferedReader(new InputStreamReader(toServer.getInputStream()));

       System.out.println(bufr.readLine());

       bufr.close();

       toServer.close();

       }catch(IOException e){

           e.printStackTrace();

            break;

       }

    }                                             

    /**

     * @param args the command line arguments

     */

    public static void main(String args[]) {

        /* Set the Nimbus look and feel */

        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">

        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.

         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html

         */

        try {

            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {

                if ("Nimbus".equals(info.getName())) {

                    javax.swing.UIManager.setLookAndFeel(info.getClassName());

                    break;

                }

            }

        } catch (ClassNotFoundException ex) {

            java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);

        } catch (InstantiationException ex) {

            java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);

        } catch (IllegalAccessException ex) {

            java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);

        } catch (javax.swing.UnsupportedLookAndFeelException ex) {

            java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);

        }

        //</editor-fold>

        /* Create and display the form */

        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {

                new NewJFrame().setVisible(true);

            }

        });

    }

    // Variables declaration - do not modify                    

    private javax.swing.JPanel jPanel1;

    private javax.swing.JButton recvMesgButton;

    // End of variables declaration                  

}

Some body please guide me how to get around with this problem.

Zulfi.

Answers

This discussion has been closed.