网络传输的问题?
这里有一个服务器和一个客户端,运行环境是JB2006,主要就是客户端发送数据,服务器处理,然后在回传一个信息,问题是用Data流很正常,一换成Object流就会卡住(我想用Object流),这是为什么,怎么解决。小弟初学JAVA,谢谢高手指导了。。
//服务器
package com.wvnet;
import java.io.*;
import java.net.*;
public class Server
{
public static void main(String[] args)
{
try
{
ServerSocket serverSocket = new ServerSocket(10001);
int clientNo = 1;
while (true)
{
Socket connectToClient = serverSocket.accept();
System.out.println( "Start thread for client " + clientNo);
HandleAClient thread = new HandleAClient(connectToClient,
clientNo);
thread.start();
clientNo++;
}
} catch (IOException ex)
{
System.err.println(ex);
}
}
}
class HandleAClient extends Thread
{
private Socket connectToClient;
private int clientNo;
public HandleAClient(Socket socket, int clientNo)
{
connectToClient = socket;
this.clientNo = clientNo;
}
public void run()
{
try
{
// DataInputStream isFromClient = new DataInputStream(
// connectToClient.getInputStream());
// DataOutputStream osToClient = new DataOutputStream(
// connectToClient.getOutputStream());
ObjectInputStream isFromClient =new ObjectInputStream(connectToClient.getInputStream());
ObjectOutputStream osToClient =new ObjectOutputStream(connectToClient.getOutputStream());
double radius = isFromClient.readDouble();
System.out.println( "radius received from client " +
clientNo + ": " + radius);
double area = radius * radius * Math.PI;
osToClient.writeDouble(area);
osToClient.flush();
System.out.println( "Area found: " + area);
} catch (IOException ex)
{
System.err.println(ex);
}
}
}
//客户端
package com.wvnet;
import java.io.*;
import java.net.*;
public class Client
{
public static void main(String[] args)
{
try
{
Socket connectToServer = new Socket( "localhost ", 10001);
// DataInputStream isFromServer = new DataInputStream(
// connectToServer.getInputStream());
// DataOutputStream osToServer =
// new DataOutputStream(connectToServer.getOutputStream());
ObjectInputStream isFromServer =new ObjectInputStream(connectToServer.getInputStream());
ObjectOutputStream osToServer =new ObjectOutputStream(connectToServer.getOutputStream());
System.out.print( "Please enter a radius: ");
osToServer.writeDouble(20);
osToServer.flush();
double area = isFromServer.readDouble();
System.out.println( "Area received from the server is "
+ area);
}
catch (IOException ex)
{
System.err.println(ex);
}
}
}
[解决办法]
用缓冲流试过没?
[解决办法]
可能是串化的问题
[解决办法]
如果你要用Object流,至少得保证对象是序列化的,既这个对象实现Serializable接口,
把你要传送的对象,封装到实现这个接口的类中,再读写这个类的一个实例,试试