핸드폰에서 컴퓨터로 사진을 전송하는 어플을 만들고
서버를 구축해서 실행을 돌려봤는데요

아래는 작성한 코드구요. 밑에 빨간색 친 부분이 자꾸 java.lang.NullPointerException 에러가 뜨네요
뭐가 문제인가요?? ㅠㅠㅠ



import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Panel;
import java.awt.Toolkit;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.EOFException;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketException;
import java.net.URL;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Timer;

import javax.imageio.ImageIO;
public class server_input_thread implements Serializable{

public static void main(String[] ar)
{
System.out.println("Thread를 이용한 사진 저장 서버입니다.");
final int SERVERPORT = 5555;
    int count = 0;
    //udp를 통해 전송되는 사진을 임의의 파일로 만들어 저장
    try{

       DatagramSocket  datagramSocket = new DatagramSocket( SERVERPORT );
    
    
           byte[] data = new byte[512];
        
       DatagramPacket  datagramPacket = new DatagramPacket( data , data.length );
    
       
       datagramSocket.receive(datagramPacket);
       String info = new String(datagramPacket.getData() , 0 , datagramPacket.getLength());

      String da[] =  info.split(",");
        String name = da[0];
        int length = Integer.valueOf(da[1]);
        String type = da[2];
        FileOutputStream output = new FileOutputStream(name);
            if(type.contains("other"))
        {

   
     System.out.println("파일 수신중");  
                    byte buf1[] = new byte[length];
                    int a=50000, t=0;

                 for(int i=0; i<length; i+=50000) {
            try {
           
           
              System.out.println("수신 과정" + i + "..." + length);
            byte buf2[] = new byte[50000];
            DatagramPacket dp1 = new DatagramPacket(buf2, buf2.length);
            datagramSocket.receive(dp1);
           
            try {
Thread.sleep(10);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
            if(length<i+50000)
            a=length-i;
             System.arraycopy(buf2, 0, buf1, i, a);
            }catch(Exception e)
            {
            e.printStackTrace();
           
            break;
           
            }
      
            }
                    System.out.println("파일 전송 완료");
                    output.write(buf1, 0, buf1.length);
                    output.flush();
                    output.close();

        
        }
        else
        {
        byte[] file_data = new byte[Integer.valueOf(da[1])];
            
             
         datagramSocket.receive(datagramPacket);
              
      
         file_data = datagramPacket.getData();
         
      
                    output.write(file_data);
                    output.flush();
                    output.close();
      
      
                    datagramSocket.close();
             try {
         BufferedImage bi = ImageIO.read( new File(name) );
          pic p = new pic(name);
        
               p.setSize(bi.getWidth(),bi.getHeight());
               p.setVisible(true);
               System.out.println("사진 전송이 완료 되었습니다.");
         } catch (IOException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
         }
         
              
        
        }
         
       
    
       }
    catch(IOException ioe)
    {
    
    }
 
}
}
//저장된 파일을 Frame 창에 띄우는 class
class pic extends Frame
{
  URL url;
  Image img1;
  Panel p1;
  
  
  public pic(String s)
  {
  p1 = new Panel();
  this.add(p1,BorderLayout.SOUTH);
  p1.setLayout(new BorderLayout());
  
  img1 = Toolkit.getDefaultToolkit().getImage(s);
  
  this.addWindowListener(new WindowAdapter()
  {
  public void windowClosing(WindowEvent we)
  {
  System.exit(0);
  }
  });
  this.setResizable(false);
    }
    public void paint(Graphics g)
    {
     g.drawImage(img1, 0, 0,this);
    
    }
}