文选流氓 发表于 2003-2-7 01:01

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]
查看完整版本: 1-1-12-1 JAVA中怎么进行类型转换?