package yyw;import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.Date;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;public class server  extends Thread
{
private static ServerSocket ss;
private static  Socket s;
private JTextArea rec;
private static JTextArea sen;
private JLabel label;
private JLabel label2;
static JTextField tf2;
public void addframe(JFrame frame)
{
frame.setTitle("服务端程序");
frame.setSize(600,400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocation(100,100);
JLabel label=new JLabel("输入对方IP:");
JTextField tf=new JTextField(25);
tf.setText("127.0.0.1");
tf.setEditable(false);
JLabel label2=new JLabel("开放端口:");
JPanel p=new JPanel();
JPanel b=new JPanel();
final JTextField tf2=new JTextField(10);
tf2.setText("6000");
tf2.setEditable(false);
p.add(label);
p.add(tf);
p.add(label2);
p.add(tf2);
frame.getContentPane().add(p,"North");
final JTextArea rec=new JTextArea(30,40);
rec.setLineWrap(true);
JTextArea sen=new JTextArea(30,40);
sen.setLineWrap(true);
b.setLayout(new BorderLayout());
b.add(rec,"North");
b.add(sen,"Center");
frame.getContentPane().add(b,"Center");
JPanel u=new JPanel();
JButton send=new JButton("发送");
send.addActionListener(new ActionListener()
{ @Override
public void actionPerformed(ActionEvent e) 
{
try {
sendnews();
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}

}

}
);

JButton open=new JButton("开启服务器");
JButton close=new JButton("关闭服务器");
close.addActionListener(new ActionListener()
{ @Override
public void actionPerformed(ActionEvent e)
{
try {

ss.close();
s.close();
System.exit(0);

} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}


}

}
);
open.addActionListener(new ActionListener()
{ @Override
public void actionPerformed(ActionEvent e)
{

while(true)
{
try 
{
Socket s=ss.accept();
new server().start();
rec.append("port:"+s.getPort()+" "+"localaddress:"+s.getLocalAddress());
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}

}


}

});
u.add(open);
u.add(close);
u.add(send);
frame.getContentPane().add(u,"South");
frame.setVisible(true);




}

public static  void sendnews() throws Exception
{

OutputStream out=s.getOutputStream();
byte[] bt=sen.getText().getBytes();
out.write(bt);


}
public void run()
{
try
{
OutputStream out=s.getOutputStream();
byte[] news=".......连接服务器成功".getBytes();
out.write(news);
InputStream in=s.getInputStream();
byte[] buf=new byte[512];

while(in.read(buf)!=-1)
{
Date date=new Date();
int time=date.getHours();
SimpleDateFormat s=new SimpleDateFormat("yyyy-mm-dd HH:MM:SS");
String t=s.format(date);
String line=System.getProperty("line.separator");
    rec.append(t+""+line);
    rec.append(new String(buf));
    rec.append(line);
}


}
catch(Exception e)
{
e.getStackTrace();
}


}
public static void main(String[] args) throws Exception
{
server ser=new server();
JFrame frame=new JFrame();
ser.addframe(frame);
//int i=Integer.parseInt(tf2.getText());
ServerSocket ss=new ServerSocket(6000);


}}自己写了一个服务端程序
错了好多处 自己实力不足 检查不出来 还请各位大侠帮忙解决一下
错误 提示:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at yyw.server$3.actionPerformed(server.java:114)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6216)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5981)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4583)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4413)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4556)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4220)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4150)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2475)
at java.awt.Component.dispatchEvent(Component.java:4413)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

解决方案 »

  1.   

    我还没开始学, 只是看您import了这么多的类,就吓爬了
      

  2.   

    bug太多  没法修啊楼主 要想没有exception加一句  ss = new ServerSocket(6000); 就可以了 try 
                                {ss = new ServerSocket(6000); 
                                    Socket s=ss.accept();
                                    new server().start();
                                    rec.append("port:"+s.getPort()+" "+"localaddress:"+s.getLocalAddress());
                                } catch (IOException e1) {
                                    // TODO Auto-generated catch block
                                    e1.printStackTrace();
                                }
    public static void main(String[] args) throws Exception
        {
            server ser=new server();
            JFrame frame=new JFrame();
            ser.addframe(frame);
            //int i=Integer.parseInt(tf2.getText());
           // ServerSocket ss=new ServerSocket(6000);
            
            
        }
      

  3.   

    写的很乱,不知道楼主想干什么?
    ss初始化的位置弄错了,不应该写在main里面,应该写着类里面,可以写在open的动作里面。