程序提示java.lang.NullPointerException,请问何解。
package df;
import java.net.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.io.*;
import java.util.concurrent.*;
public class df extends JFrame implements ActionListener
{
JPanel pSaler;
JPanel pBuyer;
JLabel lbBuyer,lbSaler;
JTextField txtSaler;
JTextArea txtBuyer;
JScrollPane jsp;
JButton btnStart;
private ExecutorService executorService;//线程池
         private final int POOL_SIZE=10;//单个CPU线程池大小
ServerSocket serverSocket;
Socket sock;
DataOutputStream out;
DataInputStream in;

public df()
{
try
{
serverSocket=new ServerSocket(8888);
JOptionPane.showMessageDialog(null, "服务器启动成功");
}
catch(IOException e)
{
JOptionPane.showMessageDialog(null, "服务器启动失败");
}
createUI();
}
public void service()
{
            while(true)
            {
            try 
            {  
                //接收客户连接,只要客户进行了连接,就会触发accept();从而建立连接
                sock=serverSocket.accept();
                executorService.execute(new Handler(sock,this));
                
             } 
                 catch (Exception e) 
             {
                e.printStackTrace();
             }
           }
        }
     public static void main(String args[])
{
new df().service();
}
}Hander代码:package df;
import java.io.*;
import java.net.Socket;class Handler implements Runnable{
    private Socket sock;
    DataOutputStream out;
    DataInputStream in;
    df fp;
    public Handler(Socket sock,df fp){
        this.sock=sock;
    }
    public void run()
    {
        try 
        {
            System.out.println("New connection accepted "+sock.getInetAddress()+":"+sock.getPort());
            out=new DataOutputStream(sock.getOutputStream());
in=new DataInputStream(sock.getInputStream());
out.writeUTF("连接服务器成功");
        }
        catch(Exception e)
        {
         e.printStackTrace();
        }
        while(true)
{
try
{
String msg;
msg=fp.in.readUTF();
int port=Integer.parseInt(msg);
if(port<8000)
{
fp.txtBuyer.append("买家:"+msg+"进来了\n");
}
else
{
fp.txtSaler.setText(""+msg);
}
}
catch(Exception ee)
{break;}
}
    }
}

解决方案 »

  1.   


    import java.net.*;
    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
    import java.io.*;
    import java.util.concurrent.*;
    public class df extends JFrame implements ActionListener
    {
    JPanel pSaler;
    JPanel pBuyer;
    JLabel lbBuyer,lbSaler;
    JTextField txtSaler;
    JTextArea txtBuyer;
    JScrollPane jsp;
    JButton btnStart;
    private ExecutorService executorService;//线程池
            private final int POOL_SIZE=10;//单个CPU线程池大小
    ServerSocket serverSocket;
    Socket sock;
    DataOutputStream out;
    DataInputStream in;public df()
    {
    try
    {
    serverSocket=new ServerSocket(8888);
    JOptionPane.showMessageDialog(null, "服务器启动成功");
    }
    catch(IOException e)
    {
    JOptionPane.showMessageDialog(null, "服务器启动失败");
    }
    createUI();
    }
    public void service()
    {
                while(true)
                {
                try
                { 
                    //接收客户连接,只要客户进行了连接,就会触发accept();从而建立连接
                  sock=serverSocket.accept();
                    executorService.execute(new Handler(sock,this));               
                }
                    catch (Exception e)
                {
                    e.printStackTrace();
                }
              }
            }
        public static void main(String args[])
    {
    new df().service();
    }
    }Hander代码:package df;
    import java.io.*;
    import java.net.Socket;class Handler implements Runnable{
        private Socket sock;
        DataOutputStream out;
        DataInputStream in;
        df fp;
        public Handler(Socket sock,df fp){
            this.sock=sock;
        }
        public void run()
        {
            try
            {
                System.out.println("New connection accepted "+sock.getInetAddress()+":"+sock.getPort());
                out=new DataOutputStream(sock.getOutputStream());
    in=new DataInputStream(sock.getInputStream());
    out.writeUTF("连接服务器成功");
            }
            catch(Exception e)
            {
            e.printStackTrace();
            }
            while(true)
    {
    try
    {
    String msg;
    msg=fp.in.readUTF();
    int port=Integer.parseInt(msg);
    if(port <8000)
    {
    fp.txtBuyer.append("买家:"+msg+"进来了\n");
    }
    else
    {
    fp.txtSaler.setText(""+msg);
    }
    }
    catch(Exception ee)
    {break;}
    }
        }

      

  2.   

    可以参考下列的例子 
    http://blog.csdn.net/hzhxxx/archive/2009/12/09/4970196.aspx下列描述了JNSP(java  network service platform)服务的部署和功能,如有不明白之处,自己查看源代码,我无力和没有太多时间回答太多的问题.
    源代码一起提供,可以随意修改,发布,并商业化,但请保留作者的信息.为了技术的进步,请注意共享成就.目前已经发布于:http://download.csdn.net/source/1885332;http://hzhxxx.download.csdn.net/
    如果查看后有技术问题探讨和建议的,欢迎致电致信联系.系统架构设计和实现有如下特点:
    A. 采用 Accept-Connect 通讯模型,能统一管理系统中使用的所有 Socket 资源;
    B. 系统支持通信和协议分离的实现原则,支持自定义协议解析模块;通信负责数据收发,协议负责数据鉴别,两者配合实现通信和协议的和谐工作;
    C. 灵活支持业务处理功能重定义,分级支持慢业务和快业务的不同业务处理线程;
    D. 丰富灵活的配置参数,能满足高扩展性;
    E. 配合业务处理和通信模型,能异步的管理所有的交互步骤;
    F. 分布式服务设计和部署,实现动态(热拔插)的增加和较少业务服务器,减少乃至拒绝单点服务;