|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
- 发信人: jimh (傻茄子), 信区: Java
- 标 题: Re: JAVA中怎么进行类型转换?
- 发信站: BBS 水木清华站 (Tue Apr 13 13:33:19 1999)
- 说实际点吧,我用DatagramSocket将一个这样的结构:
- class ClientInfo
-
- {
-
- String Name;
-
- InetAddress Address;
-
- int Port;
-
-
-
- public ClientInfo( String N, InetAddress Addr, int port )
-
- {
-
- Name = N;
-
- Address = Addr;
-
- Port = port;
-
- }
-
- }
- 传到client方,但是怎么把它还原呢?
- 【 在 jjhwang (小受) 的大作中提到: 】
- : 转换成什么?
- : 自己编程实现啦
- : 如,四个byte是一个int,
- : 可以用最后一个byte与上一个FF000000,
- : 再加上一个倒数第二个byte与上一个00ff0000……
- : 依此类推嘛
- 发信人: jjhwang (小受), 信区: Java
- 标 题: Re: JAVA中怎么进行类型转换?
- 发信站: BBS 水木清华站 (Tue Apr 13 14:41:39 1999)
- 你在发送前,把每个数据项都转换为byte,然后再传,如:
- for (int j = 0 ; j < Name.length() ; j++ )
- message[i++] = (byte)Name.charAt(j);
- 就可以把Name加到byte流里了,
- 然后,把InetAddress用方法得到一个byte[],用InetAddress.getAddress()就可以,
- 再接在message[]后面,最后再加上int型的Port,方法前面已经说过了,
- 就把这个类组成了一个byte[],把这个messae[]发过去,
- 在接收方再进行相反的操作,就可以拆开了。
- 【 在 jimh (傻茄子) 的大作中提到: 】
- : 说实际点吧,我用DatagramSocket将一个这样的结构:
- : class ClientInfo
- : {
- : String Name;
- : InetAddress Address;
- : int Port;
- : public ClientInfo( String N, InetAddress Addr, int port )
- : {
- : Name = N;
- : Address = Addr;
- : Port = port;
- : }
- : }
- : 传到client方,但是怎么把它还原呢?
- 发信人: jimh (傻茄子), 信区: Java
- 标 题: Re: JAVA中怎么进行类型转换?
- 发信站: BBS 水木清华站 (Tue Apr 13 15:16:36 1999)
- 其他的好说,那个InetAddress怎么还原哪。
- 其实我是把所有的类型都用各自的ToStrin转成了String再一起转成byte[]的。
- Name和Port还是好还原的。但InetAddress怎么还原呀。
-
- 【 在 jjhwang (小受) 的大作中提到: 】
- : 你在发送前,把每个数据项都转换为byte,然后再传,如:
- : for (int j = 0 ; j < Name.length() ; j++ )
- : message[i++] = (byte)Name.charAt(j);
- : 就可以把Name加到byte流里了,
- : 然后,把InetAddress用方法得到一个byte[],用InetAddress.getAddress()就可以,
- : 再接在message[]后面,最后再加上int型的Port,方法前面已经说过了,
- : 就把这个类组成了一个byte[],把这个messae[]发过去,
- : 在接收方再进行相反的操作,就可以拆开了。
- 发信人: jjhwang (小受), 信区: Java
- 标 题: Re: JAVA中怎么进行类型转换?
- 发信站: BBS 水木清华站 (Tue Apr 13 15:32:49 1999)
- 【 在 jimh (傻茄子) 的大作中提到: 】
- : 其他的好说,那个InetAddress怎么还原哪。
- : 其实我是把所有的类型都用各自的ToStrin转成了String再一起转成byte[]的。
- : Name和Port还是好还原的。但InetAddress怎么还原呀。
- 前面发送时不是转成了byte[]吗?
- 实际上每个InetAddress由四个byte组成,你再把收到的byte,
- 先截下Name所占的byte,然后连着取出四个byte,把四个byte转成“XX.xxx.xxx.xxx”
- 应该很容易了吧?
- 然后用InetAddress.getByName(String host)就搞定了。
- 试试看!
- --
- 发信人: jimh (傻茄子), 信区: Java
- 标 题: Re: JAVA中怎么进行类型转换?
- 发信站: BBS 水木清华站 (Wed Apr 14 12:18:58 1999)
- 能不能在本地把结构传输到BufferedStream中,再从Buffer中取出来
- 当作UDP packet发出去,再在另一端通过BufferedStream取出来呢?
- 【 在 ft (甜甜甜) 的大作中提到: 】
- : I am not sure if you have to use UDP packet.
- : I think it will be much more convenient to use TCP/IP stream.
- : There is no need to make such conversion.
- :
- : 【 在 jimh (傻茄子) 的大作中提到: 】
- :
- 发信人: jjhwang (小受), 信区: Java
- 标 题: Re: JAVA中怎么进行类型转换?
- 发信站: BBS 水木清华站 (Wed Apr 14 13:14:42 1999)
- 【 在 jimh (傻茄子) 的大作中提到: 】
- : 能不能在本地把结构传输到BufferedStream中,再从Buffer中取出来
- : 当作UDP packet发出去,再在另一端通过BufferedStream取出来呢?
- 当然是可以的。
- 传输的方法有无数种,但你要做的是保证你的结构转成byte流,以及
- 再把byte流还原成结构这两个步骤不出错。
- 至于用BufferedStream,我觉得没什么必要,一般是在TCP的Socket连接时,
- 为了加快速度而用Buffered流做个缓存。
- --
- 发信人: ft (甜甜甜), 信区: Java
- 标 题: Re: JAVA中怎么进行类型转换?
- 发信站: BBS 水木清华站 (Tue Apr 13 23:39:54 1999) WWW-POST
- I am not sure if you have to use UDP packet.
- I think it will be much more convenient to use TCP/IP stream.
- There is no need to make such conversion.
- 【 在 jimh (傻茄子) 的大作中提到: 】
- : 说实际点吧,我用DatagramSocket将一个这样的结构:
- : class ClientInfo
- : {
- : String Name;
- : InetAddress Address;
- : int Port;
- : public ClientInfo( String N, InetAddress Addr, int port )
- : {
- : Name = N;
- : Address = Addr;
- : Port = port;
- : }
- : }
- : 传到client方,但是怎么把它还原呢?
复制代码
|
|