首页 > 解决方案 > Java Sockets IP 问题

问题描述

我开发了一个简单的套接字服务器客户端应用程序。只有当我运行项目时,它只有在代码在 run 方法中并且 IP 地址已经在代码中定义的情况下才有效。我已经找到了一个解决方法,它可以让我自己输入 IP,但是它非常喜怒无常并且经常失败,除了下面的例外。

package nxs;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.Socket;
import javax.swing.JOptionPane;
import static nxs.nx.s;

/**
 *
* @author kyleg
*/
public class control extends javax.swing.JFrame {
static Socket s;


static DataOutputStream dout;
static DataInputStream din;
/**
 * Creates new form contol
 */
public control() {
    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() {

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGap(0, 400, Short.MAX_VALUE)
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGap(0, 300, Short.MAX_VALUE)
    );

    pack();
}// </editor-fold>                        

/**
 * @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(control.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (InstantiationException ex) {
        java.util.logging.Logger.getLogger(control.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (IllegalAccessException ex) {
        java.util.logging.Logger.getLogger(control.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (javax.swing.UnsupportedLookAndFeelException ex) {
        java.util.logging.Logger.getLogger(control.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    }
    //</editor-fold>
    //</editor-fold>

    /* Create and display the form */
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new control().setVisible(true);
        }
    }); String msgin = "";
    String serverAddress = JOptionPane.showInputDialog(
        "Enter IP Address of a machine that is\n" +
        "running the date service on port 1201:");


  if(!serverAddress.equals("")){try{


        s = new Socket(serverAddress,1201);

        din = new DataInputStream(s.getInputStream());
        dout = new DataOutputStream(s.getOutputStream());


        while(!msgin.equals("exit")){

        msgin = din.readUTF();


        }



    }
    catch(Exception e){}}
}

// Variables declaration - do not modify                     
// End of variables declaration                   
}

例外:

javax.swing.plaf.nimbus.NimbusStyle.getValues(NimbusStyle.java) 的 javax.swing.plaf.nimbus.NimbusStyle.validate(NimbusStyle.java:298) 的线程“AWT-EventQueue-0”中的异常 java.lang.NullPointerException :806) 在 javax.swing.plaf.nimbus.NimbusStyle.getInsets(NimbusStyle.java:485) 在 javax.swing.plaf.synth.SynthStyle.installDefaults(SynthStyle.java:913) 在 javax.swing.plaf.synth。 SynthLookAndFeel.updateStyle(SynthLookAndFeel.java:265) 在 javax.swing.plaf.synth.SynthPanelUI.updateStyle(SynthPanelUI.java:117) 在 javax.swing.plaf.synth.SynthPanelUI.installDefaults(SynthPanelUI.java:100) 在 javax .swing.plaf.basic.BasicPanelUI.installUI(BasicPanelUI.java:56) 在 javax.swing.plaf.synth.SynthPanelUI.installUI(SynthPanelUI.java:62) 在 javax.swing.JComponent.setUI(JComponent.java:666) 在 javax.swing.JPanel.setUI(JPanel.java:153) 在 javax.swing.JPanel.updateUI(JPanel.java:126) 在 javax.swing.JPanel.(JPanel.java:86) 在 javax.swing .JPanel.(JPanel.java:109) 在 javax.swing.JPanel.(JPanel.java:117) 在 javax.swing.JRootPane.createGlassPane(JRootPane.java:546) 在 javax.swing.JRootPane.(JRootPane.java :366) 在 javax.swing.JFrame.createRootPane(JFrame.java:286) 在 javax.swing.JFrame.frameInit(JFrame.java:267) 在 javax.swing.JFrame.(JFrame.java:190) 在 nxs。 control.(control.java:27) at nxs.control$1.run(control.java:87) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311) at java.awt.EventQueue.dispatchEventImpl(EventQueue .java:756) 在 java.awt.EventQueue.access$500(EventQueue.java:97) 在 java.awt.EventQueue$3.run(EventQueue.java:709)在 java.awt.EventQueue$3.run(EventQueue.java:703) 在 java.security.AccessController.doPrivileged(Native Method) 在 java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80) 在 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) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) 在 java.awt.EventDispatchThread.run(EventDispatchThread.java: 82) 线程“main”java.lang 中的异常。NullPointerException at nxs.control.main(control.java:95) C:\Users\kyleg\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53:Java 返回:1 BUILD FAILED(总时间: 4 秒)

标签: javasockets

解决方案


推荐阅读