首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

网络传输的有关问题

2012-03-09 
网络传输的问题?这里有一个服务器和一个客户端,运行环境是JB2006,主要就是客户端发送数据,服务器处理,然后

网络传输的问题?
这里有一个服务器和一个客户端,运行环境是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接口,
把你要传送的对象,封装到实现这个接口的类中,再读写这个类的一个实例,试试

热点排行