1-1-12-1 JAVA中怎么进行类型转换?
发信人: 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 (intj = 0 ; j < Name.length() ; j++ )
message = (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 (intj = 0 ; j < Name.length() ; j++ )
: message = (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方,但是怎么把它还原呢?
页:
[1]