黑马程序员技术交流社区

标题: 分享一个聊天小程序!!! [打印本页]

作者: myzhang    时间: 2014-9-12 12:07
标题: 分享一个聊天小程序!!!
  1. package socket;
  2. import java.io.*;
  3. import java.net.*;
  4. public class Server extends Thread
  5. {
  6.         ServerSocket skt;
  7.         Socket Client[]=new Socket[10];
  8.         Socket client1=null;
  9.         int i=0;  
  10.         int port,k=0,l=0;
  11.         PrintStream theOutputStream;
  12.         Face chat;
  13.         public Server(int port,Face chat)
  14.         {
  15.                 try
  16.                 {
  17.                         this.port =port;
  18.                         skt=new ServerSocket(port);
  19.                         this.chat=chat;
  20.                 }
  21.                 catch(IOException e)
  22.                 {
  23.                         chat.ta.append(e.toString());
  24.                 }
  25.         }
  26.         public void run()
  27.         {
  28.             chat.ta.append("等待连线......");
  29.                 while(true)
  30.                 {
  31.                         try
  32.                         {
  33.                                 Client[k]=skt.accept();
  34.                                 if (i<2)
  35.                                 {
  36.                                         ServerThread server[] =new ServerThread[10];
  37.                                         server[k]=new ServerThread(Client[k],this.chat,i);
  38.                                         l=server.length;
  39.                                         server[k].start();
  40.                                         chat.ta.append("客户端"+Client[k].getInetAddress()+"已连线\n");
  41.                                         theOutputStream=new PrintStream(server[k].getClient().getOutputStream());
  42.                                         i=server[k].getI();
  43.                                         k++;
  44.                                 }
  45.                                 else
  46.                                 {}
  47.                         }
  48.                         catch (SocketException e)
  49.                         {}
  50.                         catch(IOException e)
  51.                         {
  52.                                 chat.ta.append(e.toString());
  53.                         }
  54.                 }
  55.         }
  56.         public void dataout(String data)
  57.         {
  58.                 theOutputStream.println(data);
  59.         }
  60. }

  61. class ServerThread extends Thread
  62. {
  63.         ServerSocket skt;
  64.         Socket Client;
  65.         int port;
  66.         int i;
  67.         BufferedReader theInputStream;
  68.         PrintStream theOutputStream;
  69.         String readin;
  70.         Face chat;
  71.         public ServerThread(Socket s,Face chat,int i)
  72.         {
  73.                 this.i=++i;
  74.                 Client=s;
  75.                 this.chat=chat;
  76.         }
  77.         public int getI()
  78.         {
  79.                 return this.i;
  80.         }
  81.         public Socket getClient()
  82.         {
  83.                 return this.Client;
  84.         }
  85.         public void run()
  86.         {
  87.                 try
  88.                 {
  89.                         theInputStream=new BufferedReader(new InputStreamReader(Client.getInputStream()));
  90.                         theOutputStream=new PrintStream(Client.getOutputStream());
  91.                         while(true)
  92.                         {
  93.                                 readin=theInputStream.readLine();
  94.                                 chat.ta.append(readin+"\n");
  95.                         }
  96.                 }
  97.                 catch (SocketException e)
  98.                 {
  99.                         chat.ta.append("server连接中断!\n");
  100.                         chat.clientBtn.setEnabled(true);
  101.                         chat.serverBtn.setEnabled(true);
  102.                         chat.tfaddress.setEditable(true);
  103.                         chat.tfport.setEditable(true);
  104.                         try
  105.                         {
  106.                                 i--;
  107.                                 skt.close();//这是第108行,有什么错误啊
  108.                                 Client.close();
  109.                         }
  110.                         catch (IOException err)
  111.                         {
  112.                                 chat.ta.append(err.toString());
  113.                         }
  114.             }
  115.                 catch (IOException e)
  116.                 {
  117.                         chat.ta.append(e.toString());
  118.                 }
  119.         }
  120.         public void dataout(String data)
  121.         {
  122.                 theOutputStream.println(data);
  123.         }
  124. }
复制代码



作者: myzhang    时间: 2014-9-12 12:09
这是服务器端的类,可惜当我关闭客户端时,在服务器端出现如下错误提示: Exception in thread "Thread-4" java.lang.NullPointerException         at socket.ServerThread.run(Server.java:108)
作者: 许文搏    时间: 2014-9-15 16:55
NullPointerException  这是空指针异常  只要见到这个,马上要找一下有没有赋值为空的地方
作者: xiayoutianxia    时间: 2014-9-15 17:26
关闭客户端和服务端需要判断是否为空么?
作者: myzhang    时间: 2014-9-15 23:18
空指针异常!!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2