当前位置:  技术问答>java相关

=====请问网络编程中怎样传输一个类?=====

    来源: 互联网  发布时间:2017-03-14

    本文导语:  import java.io.*; import java.net.*; public class EchoClient {     public static void main(String[] args) throws IOException {         Socket echoSocket = null;         PrintWriter out = null;         BufferedReader in = null;    ...

import java.io.*;
import java.net.*;

public class EchoClient {
    public static void main(String[] args) throws IOException {

        Socket echoSocket = null;
        PrintWriter out = null;
        BufferedReader in = null;

        try {
            echoSocket = new Socket("taranis", 7);
            out = new PrintWriter(echoSocket.getOutputStream(), true);
            in = new BufferedReader(new InputStreamReader(
                                        echoSocket.getInputStream()));
        } catch (UnknownHostException e) {
            System.err.println("Don't know about host: taranis.");
            System.exit(1);
        } catch (IOException e) {
            System.err.println("Couldn't get I/O for "
                               + "the connection to: taranis.");
            System.exit(1);
        }

BufferedReader stdIn = new BufferedReader(
                                   new InputStreamReader(System.in));
String userInput;

while ((userInput = stdIn.readLine()) != null) {
    out.println(userInput);
    System.out.println("echo: " + in.readLine());
}

out.close();
in.close();
stdIn.close();
echoSocket.close();
    }
}

上段代码中可用in.readLine()读一行字符,用out.println()往缓冲区写一行字符;但怎样才能实现在网络中传送一个类对象呢?
=====
谢谢!

|
你把类串行化后就可以传输了。

|
具体工作由对象序列化完成。
对象的序列化处理非常简单,只需对象实现了Serializable接口即可(该接口仅是一个标记,没有方法)。在Java 1.1中,许多标准库类都发生了改变,以便能够序列化——其中包括用于基本数据类型的全部封装器、所有集合类以及其他许多东西。甚至Class对象也可以序列化(第11章讲述了具体实现过程)。
为序列化一个对象,首先要创建某些OutputStream对象,然后将其封装到ObjectOutputStream对象内。此时,只需调用writeObject()即可完成对象的序列化,并将其发送给OutputStream。相反的过程是将一个InputStream封装到ObjectInputStream内,然后调用readObject()。和往常一样,我们最后获得的是指向一个上溯造型Object的句柄,所以必须下溯造型,以便能够直接设置。

|
//: Worm.java
// Demonstrates object serialization in Java 1.1
import java.io.*;

class Data implements Serializable {
  private int i;
  Data(int x) { i = x; }
  public String toString() {
    return Integer.toString(i);
  }
}

public class Worm implements Serializable {
  // Generate a random int value:
  private static int r() {
    return (int)(Math.random() * 10);
  }
  private Data[] d = {
    new Data(r()), new Data(r()), new Data(r())
  };
  private Worm next;
  private char c;
  // Value of i == number of segments
  Worm(int i, char x) {
    System.out.println(" Worm constructor: " + i);
    c = x;
    if(--i > 0)
      next = new Worm(i, (char)(x + 1));
  }
  Worm() {
    System.out.println("Default constructor");
  }
  public String toString() {
    String s = ":" + c + "(";
    for(int i = 0; i 

    
 
 

您可能感兴趣的文章:

  • 请问unix网络编程和linux网络有什么区别
  • 各位好,请问你们读unix网络编程有障碍吗?
  • 菜鸟问题:请问要在Linux操作系统下完成TCP/IP网络编程,用什么编程工具好?
  • 求救,请问哪里有unix网络编程的电子书下载(richard stevens)
  • 请问从哪里可以下到UNIX网络编程代码例子里用的包裹函数啊
  • 请问:网络编程里服务器端程序,运行后就会有Address already in use,该怎么办啊
  • 菜鸟问题 请问 liunx下网络编程是否有类似win下面的I/O模型可用?
  • 学习Linux的网络编程,请问使用哪个公司的linux最好?
  • 请问各位几个关于java网络编程的简单问题,谢谢!
  • 请问要开发一种网络电话,要会什么编程语言?
  • 请问在LINUX下进行网络编程,什么模型或者什么技术效率比较高?
  • 我想学习基于Linux的网络编程,请问如何准备和规划?
  • 趋势的一道面试题:网络编程中设计并发服务器,使用多进程 与 多线程 ,请问有什么区别?
  • 请问有哪位高手知道如何编程实现网络唤醒开机
  • 请问再Linux下进行C/C++网络方面的编程 推荐使用哪个版本?
  • 各位设备驱动开发的朋友,请问,linux设备驱动开发和网络编程开发哪一样工资比较高呀?
  • 想向linux方向的网络编程方面发展···请问应该具备什么知识啊?麻烦指点一下··
  • 请问如何在socket编程中实现网络登陆验证?谢谢大家!
  • 请问:我发现在linux上的网络编程时, 若客户端连不上服务端,就会阻塞,但如果是在UNIX上,若连不上,会马上返回,并不阻 塞,怎样让它也能阻塞啊?
  • 请问有谁有关于JAVA无线网络编程的资料,能不能给我发一份,或者介绍相关免费网战也可以
  • 高手啊,请问如何将BufferedImage转换为可以用SOCKET传输的数据
  • 请问 linux与windows两个平台下如何实现高速数据传输?
  • 请问高手,gif/jpeg文件的格式是什么样的,我想用他们来传输数据
  • 请问,如何用程序判断一个用ftp传输的文件已经完成?
  • 请问在Unix下开发ftp传输模块,有没有什么系统函数可以调用。
  • 两台不同城市的服务器之间要进行数据传输,请问具体的该怎么实现(红帽子)
  • 请问:为什么自己编的程序不能传输文件成功
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 傻瓜问题,请问shell编程和shell脚本编程的关系
  • 请问LINUX编程(内核编程)是在什么环境下用什么IDE编?
  • 请问什么是shell编程?一般都用shell编程实现什么?
  • 我想买台二手笔记本作编程,请问java编程的最低配置是多少,价几何
  • 请问linux/unix下编程与windows下编程有什么不同呢??
  • 请问linux中,如何编程知道硬盘是否格式化,如何编程实现格式化。最好有现成接口,谢谢。
  • 请问:如果懂unix编程,那么会懂linux编程吗?一般来说:它们有什么关系呢?
  • 请问linux下C/C++编程语言,同时请推荐相关书籍
  • 请问小红帽支持中文的c,c++,数据库,阿帕奇等编程吗?
  • 请问jsp,java在window和linux下编程有什么不同?
  • 请问怎样编程获得本机的MAC地址?还有能不能设置本机MAC地址?
  • 请问linux编程前景如何?
  • 看Unix环境高级编程,提到了V和bsd,有很多不同,但是没有提到Linux,请问linux跟BSD或者unix V 编程细节哪些不同的,特别是线程,进程,和socke
  • 请问:linux下面支持多线程编程吗?
  • 请问哪有linux编程的书下载?
  • 请问初学习Linux及Linux下编程的好书?
  • 请问 在fedora6.0,TCshell编程问题
  • 请问哪儿有java2编程详解的电子书下载??本人急需!!跟贴有分!!!
  • 请问linux编程获取时间的最小单位是......?
  • 请问RS-232串行编程时为什么不用写驱动?
  • 请问:我知道路由器的telnet密码,但忘记了enable 密码,请问如何是好?
  • 请问那里有SYBASE的jbdb 2.0下载;jspsmartupload可以直接将文件上传到数据库,请问如何使用
  • 请问最新的reahat9.0是基于什么核心的?2.4?2.6?请问那里能下载?
  • 请问:请问哪里有关于linux基本操作命令讲解的资料下载,最好是幻灯片格式的.
  • 请问,我试图用#admintool&图形工具命令来安装sun workshop5.0,为什么进入的却是用户管理界面?请问具体该如何在solaris下安装应用软件
  • 请问在Redhat 9里,我从登录就是图形介面,请问如何在图形介面内进入命令行方式呢,谢谢
  • 请问玩过SOLARIS的高手门,在不正常关机后,就不能启动到windows公用桌面了,只能在命令提示模式下了,请问怎么解决这个问题啊?急~!~!
  • 请问:我在redhat下装了bochs-2.2.1-1.rpm,.装了后,想设置一下,但找不到bochsrc.fda.bxrc,请问这个文件在哪个曰录下啊。
  • 请问:在配置Qt时,很多文档都说在.profile,.login里加东西,但是我好像没有发现有这两个文件上,请问这些文件在哪个目录下啊
  • 请问:在GCC里的C程序里的变量的声明是不是只能在前面,而且相同类型的变量的声明只能放在一起?如果不是,请问怎么样可以解决这个问题.
  • 请问各位大虾,小弟今天开始学jsp了,这学期我们有java课,所以已经下载了jdk(好象是1.2),请问我的98环境怎么配置jsp环境呀?我的jdk可以运行.java程序,别的我就不知道了....谢谢!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3