CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
英特尔®游戏设计大赛100美元现金周周送 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

如何在服务器和客户机之间传递一个对象的实例?各位高手请指点。

楼主wangqisy(土豆)2003-06-04 16:51:24 在 Java / J2SE / 基础类 提问

本人迫切需要知道如何在服务器和客户机之间传递一个对象的实例,各位高手,请指点,谢谢! 问题点数:20、回复次数:5Top

1 楼jokerjava(冷血)回复于 2003-06-04 16:58:45 得分 0

那你研究研究soap吧Top

2 楼zhjjava(狂人一个)回复于 2003-06-05 01:27:44 得分 0

应该一样吧!Top

3 楼RomandAccessFile(goodghost)回复于 2003-06-05 03:04:09 得分 20

你可以用Socket中写入一个ObjectOutputStream   和ObjectInputStream,,,  
  用JAVA中的,,类锁定,,(那个类我记得不是很清了,如果明天还没有解决,明天和你说)  
  然后再用前后对应的那个类进行对象定义,然后把对象写入流,然后再用Socket进行传输Top

4 楼wangqisy(土豆)回复于 2003-06-05 08:33:29 得分 0

多谢各位高手的指点,本人已经找到了解决方法。  
  1.序列化所要传输的类,ClassPath中必须包含该类的路径(否则服务器和客户机可能有一方无法找到该类的定义,会抛出ClassNotFoundException的异常)  
  2.用ObjectOutput和ObjectInput包装自Socket传出和传入的数据流  
  3.在接收一方一定要捕获ClassNotFoundException的异常,否则程序无法正常执行  
   
  以下是本人做的实验,由服务器传出一个实例,客户端接受并打印,本人只做了单向流动,稍加改动即可双向传输实例。  
  [传输类的定义]  
  import   java.io.*;  
  public   class   Alien   implements   Serializable{   //序列化所要传输的类  
  private   int   i;  
  private   String   str=new   String();  
  public   Alien(){}  
  public   Alien(String   s){  
  str=s;}  
  public   String   toString(){  
  return   str;  
  }  
  }  
   
  [客户端]  
  import   java.net.*;  
  import   java.io.*;  
   
  public   class   JabberClient   {  
  public   static   void   main(String[]   args)  
    throws   IOException   {  
      InetAddress   addr=  
            InetAddress.getByName(null);  
            System.out.println("addr="+addr);  
            Socket   socket=   new   Socket(addr,JabberSever.PORT);  
                                            System.out.println("socket="+socket);  
            Alien   z=new   Alien();    
              try{          
                          ObjectInput   in=  
                          new   ObjectInputStream(  
                          new   DataInputStream(  
                      socket.getInputStream()));  
                   
                    try{   //此处的错误捕获代码一定要有,否则会出错  
                            z=(Alien)in.readObject();  
                          }catch   (ClassNotFoundException   e)  
                            {System.out.println("Class:"+Alien+"NotFound!");}  
                          System.out.println(z);  
                    }finally{  
      System.out.println("closing...");  
      socket.close();  
      }  
        }  
  }  
   
   
  [服务器]  
  import   java.io.*;  
  import   java.net.*;  
   
  public   class   JabberSever   {  
  public   static   final   int   PORT=8080;  
  public   static   void   main(String[]   args)  
      throws   IOException   {  
      ServerSocket   s=new   ServerSocket(PORT);  
      System.out.println("Started:   "+s);  
      try   {  
      Socket   socket=s.accept();  
      try   {  
      System.out.println("Connection   accepted:"+socket);  
                                  Alien   zorcon=new   Alien("this");    
                      ObjectOutput   out=  
                          new   ObjectOutputStream(  
                      new   DataOutputStream(  
                      socket.getOutputStream()));  
                       
                    out.writeObject(zorcon);  
                    out.flush();  
                    out.close();  
                          System.out.println(zorcon);  
                }   finally{  
                System.out.println("Closing...");  
                socket.close();  
              }  
          }finally{  
          s.close();  
          }  
      }  
  }Top

5 楼cyicecream(为了升仙(星)到处UP)回复于 2003-06-05 09:00:38 得分 0

应该也可以用RMI来实现,这样传递的类能够正确的使用?Top

相关问题

  • 服务器和客户机
  • 服务器编程问题:关于客户机访问服务器时,服务器对客户机的记录
  • 在sybase中如何配置:客户机连接服务器失败后,重试连接次数? 谢谢高手指点。
  • 客户机能Ping通服务器,但是客户机的网上邻居打不开服务器。客户机用SqlServer能连接服务器...
  • 能使用Access数据库实现客户机/服务器吗?
  • 服务器远程控制客户机,该怎么办?
  • 请问谁有access2000作客户机/服务器的经验?
  • 2000 server服务器,设置了域,客户机是98
  • 怎样映射服务器的盘符到客户机上?
  • 请问如何由服务器向客户机发送试题

关键词

  • .net
  • 服务器
  • 客户机
  • socket
  • alien
  • 实例
  • 指点
  • 高手
  • 对象
  • 传输

得分解答快速导航

  • 帖主:wangqisy
  • RomandAccessFile

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo