求教:网络数据流不能传输对象(ObjectOutputStream)
小弟最近编了一个客户端向服务器传数据的程序,用的是ObjectOutputStream与ObjectInputStream中的writeObject()与readObject()方法。客户端每一秒钟向服务器发送一个STest1类的对象。当不知为什么只有第一次接收的数据是正确的,以后都是接收与第一次相同的数据。很是郁闷啊,
(一)服务器程序
import java.io.*;
import java.net.*;
public class TCPServer {
ServerSocket serverSocket;
Socket socket;
ObjectInputStream ois;
ObjectOutputStream oos;
public TCPServer() {
try
{ serverSocket=new ServerSocket(6556);
socket = serverSocket.accept();
ois=new ObjectInputStream(socket.getInputStream());
STest1 sTest1=new STest1();
for(int i=0;i<10;i++)
{
sTest1=(STest1)ois.readObject();
System.out.println(sTest1.getData());
Thread.sleep(2000);
}
}
catch(Exception err)
{
System.out.println(err.toString());
}
}
public static void main(String args[])
{
TCPServer frame=new TCPServer();
}
}
(二)客户端程序
public class TCPClient {
Socket socket;
ObjectOutputStream oos;
ObjectInputStream ois;
public TCPClient() {
try
{
socket=new Socket("localhost",6556);
oos=new ObjectOutputStream(socket.getOutputStream());
STest1 sTest1=new STest1();
for(int i=0;i<10;i++)
{
sTest1.setData(i);
oos.writeObject(sTest1);
oos.flush();
System.out.println("SSSSSSSSS: "+sTest1.getData());
Thread.sleep(1000);
}
}
catch(Exception err)
{
System.out.println(err.toString());
}
}
public static void main(String args[])
{
TCPClient frame=new TCPClient();
}
}
(三)发送的类
import java.io.Serializable;
public class STest1 implements Serializable {
int data;
public STest1() {
}
public void setData(int newData)
{
data=newData;
}
public int getData()
{
return data;
}
}
(四)运行结果
客户端
testobjectstream.TCPClient
SSSSSSSSS: 0
SSSSSSSSS: 1
SSSSSSSSS: 2
SSSSSSSSS: 3
SSSSSSSSS: 4
SSSSSSSSS: 5
SSSSSSSSS: 6
SSSSSSSSS: 7
SSSSSSSSS: 8
SSSSSSSSS: 9
服务器
testobjectstream.TCPServer
0
0
0
0
0
0
0
0
0
0