萍聚社区-德国热线-德国实用信息网

 找回密码
 注册

微信登录

微信扫一扫,快速登录

萍聚头条

查看: 700|回复: 0

1-1-12-1 JAVA中怎么进行类型转换?

[复制链接]
发表于 2003-2-7 02:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册 微信登录

x

  1. 发信人: jimh (傻茄子), 信区: Java      
  2. 标  题: Re: JAVA中怎么进行类型转换?
  3. 发信站: BBS 水木清华站 (Tue Apr 13 13:33:19 1999)

  4. 说实际点吧,我用DatagramSocket将一个这样的结构:
  5. class ClientInfo
  6.   
  7. {
  8.   
  9.    String Name;
  10.   
  11.    InetAddress Address;
  12.   
  13.    int Port;
  14.   

  15.   
  16.    public ClientInfo( String N, InetAddress Addr, int port )
  17.   
  18.    {
  19.   
  20.     Name = N;
  21.   
  22.     Address = Addr;
  23.   
  24.     Port = port;
  25.   
  26.    }
  27.   
  28.   }

  29. 传到client方,但是怎么把它还原呢?


  30. 【 在 jjhwang (小受) 的大作中提到: 】
  31. : 转换成什么?
  32. : 自己编程实现啦
  33. : 如,四个byte是一个int,
  34. : 可以用最后一个byte与上一个FF000000,
  35. : 再加上一个倒数第二个byte与上一个00ff0000……
  36. : 依此类推嘛


  37. 发信人: jjhwang (小受), 信区: Java      
  38. 标  题: Re: JAVA中怎么进行类型转换?
  39. 发信站: BBS 水木清华站 (Tue Apr 13 14:41:39 1999)

  40. 你在发送前,把每个数据项都转换为byte,然后再传,如:
  41. for (int  j = 0 ; j < Name.length() ; j++ )
  42.                 message[i++] = (byte)Name.charAt(j);
  43. 就可以把Name加到byte流里了,
  44. 然后,把InetAddress用方法得到一个byte[],用InetAddress.getAddress()就可以,
  45. 再接在message[]后面,最后再加上int型的Port,方法前面已经说过了,
  46. 就把这个类组成了一个byte[],把这个messae[]发过去,
  47. 在接收方再进行相反的操作,就可以拆开了。

  48. 【 在 jimh (傻茄子) 的大作中提到: 】
  49. : 说实际点吧,我用DatagramSocket将一个这样的结构:
  50. : class ClientInfo
  51. : {
  52. :    String Name;
  53. :    InetAddress Address;
  54. :    int Port;
  55. :    public ClientInfo( String N, InetAddress Addr, int port )
  56. :    {
  57. :     Name = N;
  58. :     Address = Addr;
  59. :     Port = port;
  60. :    }
  61. :   }
  62. : 传到client方,但是怎么把它还原呢?


  63. 发信人: jimh (傻茄子), 信区: Java      
  64. 标  题: Re: JAVA中怎么进行类型转换?
  65. 发信站: BBS 水木清华站 (Tue Apr 13 15:16:36 1999)

  66. 其他的好说,那个InetAddress怎么还原哪。

  67. 其实我是把所有的类型都用各自的ToStrin转成了String再一起转成byte[]的。
  68. Name和Port还是好还原的。但InetAddress怎么还原呀。
  69.   


  70. 【 在 jjhwang (小受) 的大作中提到: 】
  71. : 你在发送前,把每个数据项都转换为byte,然后再传,如:
  72. : for (int  j = 0 ; j < Name.length() ; j++ )
  73. :                 message[i++] = (byte)Name.charAt(j);
  74. : 就可以把Name加到byte流里了,
  75. : 然后,把InetAddress用方法得到一个byte[],用InetAddress.getAddress()就可以,
  76. : 再接在message[]后面,最后再加上int型的Port,方法前面已经说过了,
  77. : 就把这个类组成了一个byte[],把这个messae[]发过去,
  78. : 在接收方再进行相反的操作,就可以拆开了。


  79. 发信人: jjhwang (小受), 信区: Java      
  80. 标  题: Re: JAVA中怎么进行类型转换?
  81. 发信站: BBS 水木清华站 (Tue Apr 13 15:32:49 1999)


  82. 【 在 jimh (傻茄子) 的大作中提到: 】
  83. : 其他的好说,那个InetAddress怎么还原哪。
  84. : 其实我是把所有的类型都用各自的ToStrin转成了String再一起转成byte[]的。
  85. : Name和Port还是好还原的。但InetAddress怎么还原呀。
  86. 前面发送时不是转成了byte[]吗?
  87. 实际上每个InetAddress由四个byte组成,你再把收到的byte,
  88. 先截下Name所占的byte,然后连着取出四个byte,把四个byte转成“XX.xxx.xxx.xxx”
  89. 应该很容易了吧?
  90. 然后用InetAddress.getByName(String host)就搞定了。
  91. 试试看!

  92. --

  93. 发信人: jimh (傻茄子), 信区: Java      
  94. 标  题: Re: JAVA中怎么进行类型转换?
  95. 发信站: BBS 水木清华站 (Wed Apr 14 12:18:58 1999)

  96. 能不能在本地把结构传输到BufferedStream中,再从Buffer中取出来
  97. 当作UDP packet发出去,再在另一端通过BufferedStream取出来呢?



  98. 【 在 ft (甜甜甜) 的大作中提到: 】
  99. : I am not sure if you have to use UDP packet.
  100. : I think it will be much more convenient to use TCP/IP stream.
  101. : There is no need to make such conversion.
  102. :
  103. : 【 在 jimh (傻茄子) 的大作中提到: 】
  104. :


  105. 发信人: jjhwang (小受), 信区: Java      
  106. 标  题: Re: JAVA中怎么进行类型转换?
  107. 发信站: BBS 水木清华站 (Wed Apr 14 13:14:42 1999)

  108. 【 在 jimh (傻茄子) 的大作中提到: 】
  109. : 能不能在本地把结构传输到BufferedStream中,再从Buffer中取出来
  110. : 当作UDP packet发出去,再在另一端通过BufferedStream取出来呢?

  111. 当然是可以的。

  112. 传输的方法有无数种,但你要做的是保证你的结构转成byte流,以及
  113. 再把byte流还原成结构这两个步骤不出错。

  114. 至于用BufferedStream,我觉得没什么必要,一般是在TCP的Socket连接时,
  115. 为了加快速度而用Buffered流做个缓存。

  116. --

  117. 发信人: ft (甜甜甜), 信区: Java
  118. 标  题: Re: JAVA中怎么进行类型转换?
  119. 发信站: BBS 水木清华站 (Tue Apr 13 23:39:54 1999) WWW-POST

  120. I am not sure if you have to use UDP packet.
  121. I think it will be much more convenient to use TCP/IP stream.
  122. There is no need to make such conversion.

  123. 【 在 jimh (傻茄子) 的大作中提到: 】
  124. : 说实际点吧,我用DatagramSocket将一个这样的结构:
  125. : class ClientInfo
  126. : {
  127. :    String Name;
  128. :    InetAddress Address;
  129. :    int Port;
  130. :    public ClientInfo( String N, InetAddress Addr, int port )
  131. :    {
  132. :     Name = N;
  133. :     Address = Addr;
  134. :     Port = port;
  135. :    }
  136. :   }
  137. : 传到client方,但是怎么把它还原呢?

复制代码

Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
您需要登录后才可以回帖 登录 | 注册 微信登录

本版积分规则

手机版|Archiver|AGB|Impressum|Datenschutzerklärung|萍聚社区-德国热线-德国实用信息网 |网站地图

GMT+2, 2024-5-21 15:22 , Processed in 0.051233 second(s), 16 queries , MemCached On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表