我已经开发了一个简单的套接字服务器客户端应用程序。仅当我运行该项目时,它仅在该代码位于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
}
例外:
线程“ AWT-EventQueue-0”中的异常java.lang.NullPointerException 在javax.swing.plaf.nimbus.NimbusStyle.validate(NimbusStyle.java:298) 在 javax.swing.plaf.nimbus.NimbusStyle.getValues(NimbusStyle.java: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)在 nxs.control $ 1.run(control.java:87)在 java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)在 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(本机方法),位于 java.security.ProtectionDomain $ JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80) 在java.awt.EventQueue.dispatchEvent(EventQueue.java:726)在 java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) 在 java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) 在 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) nxs.control.main(control.java:95)处的线程“ main”中的异常java.lang.NullPointerException C:\ Users \ kyleg \ AppData \ Local \ NetBeans \ Cache \ 8.2 \ executor-snippets \ run.xml:53: 返回的Java:1 失败(总时间:4秒)