如题,使用Socket做通讯程序,客户端使用Socket把一个对象写给服务器,代码为:
Socket toServer = new Socket("localhost",1001);
ObjectOutputStream streamToServer = new ObjectOutputStream(toServer.getOutputStream());
streamToServer.writeObject(data);
BufferedReader fromServer = new BufferedReader(new InputStreamReader(toServer.getInputStream()));
String status = fromServer.readLine();
getAppletContext().showStatus(status);
其中的data为Customer类的实例
服务器端的程序为:
for(;;)
{
clientMessage = (Customer)fromClient.readObject();
if(clientMessage == null)
{
break;
}
toClient.println("Received from :" + clientMessage.custName);
}
其中fromClient和toClient的定义为:
fromClient = new ObjectInputStream(netClient.getInputStream());
toClient = new PrintStream(netClient.getOutputStream());
netClient为Socket类问题:为什么客户端程序向服务器发送一次数据,服务器程序要循环两遍,第一遍能正常执行,第二遍会出一个错误, java.io.EOFException,这是为什么?如何解决?

解决方案 »

  1.   

    EOF异常是在读到了流的结尾才发生的.
    也就是说你第一次已经读完了呀.
      

  2.   

    while(true)
    {
    clientMessage = (Customer)fromClient.readObject();
    if(clientMessage != null)
    {
                      toClient.println("Received from :" + clientMessage.custName);
    break;
    }
    }
    这样吧,break不记得了,不知道有没有写对
      

  3.   

    谢谢各位,问题解决了,在发送结束后,在发送一个null对象过去就ok了。也就是说使用null作为ObjectOutputStream的结束标志。