Exception in thread "main" java.lang.NullPointerException at Server.main(Server.java:22)

xujianping32 2009-05-19 11:59:47
详见代码,结果如下:
正在监听Exception in thread "main" java.lang.NullPointerException
at Server.main(Server.java:22)


import java.io.*;
import java.net.*;
import java.util.*;
import java.awt.*;
public class Server
{
public static void main(String args[])
{
ServerSocket server=null;
ServerThread thread;
Socket you=null;
while(true)
{
try{
server=new ServerSocket(4331);//创建在端口4331上负责监听的 ServerSocket对象。
}
catch(IOException e1)
{
System.out.println("正在监听");
}
try{
you=server.accept();// server返回和客户端相连接的Socket对象。
System.out.println("客户的地址:"+you.getInetAddress());

}
catch (IOException e)
{
System.out.println("正在等待客户");
}
if(you!=null)
{
new ServerThread(you).start(); //为每个客户启动一个专门的线程。
}
else
{
continue;
}
}
}
}
class ServerThread extends Thread
{
Socket socket;
ObjectInputStream in=null;
ObjectOutputStream out=null;
String s=null;
ServerThread(Socket t)
{
socket=t;
try {
out=new ObjectOutputStream(socket.getOutputStream()); //socket返回输出流。
in=new ObjectInputStream(socket.getInputStream()); //socket返回输入流。
}
catch (IOException e)
{}
}
public void run()
{
TextArea text=new TextArea("你好,我是服务器",12,12);
try
{
out.writeBytes(text.getText());
out.flush();
//out写对象text到客户端。
}
catch (IOException e)
{
System.out.println("客户离开");
}
}
}


另外,附上客户端代码:

import java.net.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
class Client extends Frame implements Runnable,ActionListener
{
Button connection;
Socket socket=null;
ObjectInputStream in=null;
ObjectOutputStream out=null;
Thread thread;
public Client()
{
socket=new Socket();
connection=new Button("连接服务器,读取文本区对象");
add(connection,BorderLayout.NORTH);
connection.addActionListener(this);
thread = new Thread(this);
setBounds(100,100,360,310);
setVisible(true);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
);
}
public void run()
{
while(true)
{
try{
TextArea text=(TextArea)in.readObject();
add(text,BorderLayout.CENTER);
validate();
}
catch(Exception e)
{
break;
}
}
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==connection)
{
try
{
if(socket.isConnected())
{

}
else
{
InetAddress address=InetAddress.getByName("127.0.0.1");
InetSocketAddress socketAddress=new InetSocketAddress(address,4331);//创建端口为4331、地址为
//address的socketAddress
socket.connect(socketAddress) ;//socket建立和socketAddress的连接呼叫。
in =new ObjectInputStream(socket.getInputStream()); //socket返回输入流。
out = new ObjectOutputStream(socket.getOutputStream()); //socket返回输出流。
thread.start();
}
}
catch (Exception ee){}
}
}
public static void main(String args[])
{
Client win=new Client();
}
}
...全文
481 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
KURTQin 2012-06-25
  • 打赏
  • 举报
回复
楼主,我也出现了同样的错误,请问你怎么改了?
KURTQin 2012-06-25
  • 打赏
  • 举报
回复
楼主,我也出现了和你一样的问题,请问你怎么解决的??代码和你的差不多一样
cubegirl 2011-12-06
  • 打赏
  • 举报
回复
out.writeBytes(s);可以这样写
cubegirl 2011-12-06
  • 打赏
  • 举报
回复
刚上面的错了哦,不是字节,要改为out.writeObject(text);//【代码5】//out写对象text到客户端。,这个我调试过了,不会再错了,呵呵
xuanflyer 2010-10-08
  • 打赏
  • 举报
回复
starscc 2009-05-19
  • 打赏
  • 举报
回复
顶一楼的,监听语句写一遍就行了, server=new ServerSocket(4331);放while外面
xujianping32 2009-05-19
  • 打赏
  • 举报
回复
LS的,我刚试了下,还是一样的错误。
qlboob 2009-05-19
  • 打赏
  • 举报
回复
server=new ServerSocket(4331);//这句应该写在while的外面吧!
xujianping32 2009-05-19
  • 打赏
  • 举报
回复
现在的问题是:
"out写对象text到客户端",这个怎么写?
xujianping32 2009-05-19
  • 打赏
  • 举报
回复
之所以出现异常,是因为ServerSocket对象不能重复创建。
xujianping32 2009-05-19
  • 打赏
  • 举报
回复
现在我大概知道怎么回事了。

out.writeBytes(text.getText());
out.flush();
//out写对象text到客户端。
这两句应该有错,如果用正确的语句利用out写对象text到客户端?
tongliaozhang 2009-05-19
  • 打赏
  • 举报
回复
上边的try语句出了异常 server这个变量是空值所以会空指针啊
server=new ServerSocket(4331);这句话出错 你再它的catch中打印一下异常信息就知道是什么错误了 ,一般catch块不要这么写啊 最好打印一个异常信息,不然即使处理了也不知道是什么错误啊
slio2008 2009-05-19
  • 打赏
  • 举报
回复
是main函数里报的错吗?
应该是返回的对象是空值, 你没做判断就使用了 所以出现空指针。
if(obj!=null)
{
}
判断一下 跟踪一下。
sweetBug 2009-05-19
  • 打赏
  • 举报
回复
server=new ServerSocket(4331)产生异常,server便指向空了,然后你调用server.accept(),当然报空对象引用了

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧