java - 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 秒)
解决方案
推荐阅读
- python-3.x - 如何用字符串联系表情符号
- django - Nginx 路由 Django Web App 链接到错误的路径
- c++ - EASTL 和 libc++ 的 std::tuple 之间是否存在重大差异?
- python - Python Azure Databrick:“DataFrame”对象不支持项目分配
- angular - 在Angular Material中将焦点设置在表单字段上的正确方法是什么?ViewChild(使用 MatInput 或 ElementRef)对我不起作用
- vue.js - 如何在vue中获得不止一个类
- python - 在python中如何获得三个或更多圆的交点有或没有错误
- rust - 错误[E0597]:借用值在 While 循环中的生存时间不够长
- php - 我的直播 php 脚本中有错误
- javascript - 将映射加载到不同的变量名称