黑马程序员技术交流社区
标题:
分享一个聊天小程序!!!
[打印本页]
作者:
myzhang
时间:
2014-9-12 12:07
标题:
分享一个聊天小程序!!!
package socket;
import java.io.*;
import java.net.*;
public class Server extends Thread
{
ServerSocket skt;
Socket Client[]=new Socket[10];
Socket client1=null;
int i=0;
int port,k=0,l=0;
PrintStream theOutputStream;
Face chat;
public Server(int port,Face chat)
{
try
{
this.port =port;
skt=new ServerSocket(port);
this.chat=chat;
}
catch(IOException e)
{
chat.ta.append(e.toString());
}
}
public void run()
{
chat.ta.append("等待连线......");
while(true)
{
try
{
Client[k]=skt.accept();
if (i<2)
{
ServerThread server[] =new ServerThread[10];
server[k]=new ServerThread(Client[k],this.chat,i);
l=server.length;
server[k].start();
chat.ta.append("客户端"+Client[k].getInetAddress()+"已连线\n");
theOutputStream=new PrintStream(server[k].getClient().getOutputStream());
i=server[k].getI();
k++;
}
else
{}
}
catch (SocketException e)
{}
catch(IOException e)
{
chat.ta.append(e.toString());
}
}
}
public void dataout(String data)
{
theOutputStream.println(data);
}
}
class ServerThread extends Thread
{
ServerSocket skt;
Socket Client;
int port;
int i;
BufferedReader theInputStream;
PrintStream theOutputStream;
String readin;
Face chat;
public ServerThread(Socket s,Face chat,int i)
{
this.i=++i;
Client=s;
this.chat=chat;
}
public int getI()
{
return this.i;
}
public Socket getClient()
{
return this.Client;
}
public void run()
{
try
{
theInputStream=new BufferedReader(new InputStreamReader(Client.getInputStream()));
theOutputStream=new PrintStream(Client.getOutputStream());
while(true)
{
readin=theInputStream.readLine();
chat.ta.append(readin+"\n");
}
}
catch (SocketException e)
{
chat.ta.append("server连接中断!\n");
chat.clientBtn.setEnabled(true);
chat.serverBtn.setEnabled(true);
chat.tfaddress.setEditable(true);
chat.tfport.setEditable(true);
try
{
i--;
skt.close();//这是第108行,有什么错误啊
Client.close();
}
catch (IOException err)
{
chat.ta.append(err.toString());
}
}
catch (IOException e)
{
chat.ta.append(e.toString());
}
}
public void dataout(String data)
{
theOutputStream.println(data);
}
}
复制代码
作者:
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