|
发表于 2005-3-5 01:27:04
|
显示全部楼层
首先我想作为p2p的程序,自己即是客户端,也是提供数据的服务器,因此如果有其他机器作为客户端连接自己的机器,那么使用什么协议,什么端口呢,我想这就是设置的目的。
而jxta的特点就是不用关心通信时使用的具体协议,它可以是http(当需要穿越防火墙的时候),也可以是tcp(当2台机器在内网里的时候),因此需要设置多个协议所使用的端口,以便jxta程序可以自动选择使用合适的通信协议。这个对于jxta程序来说是透明的,因为有一个叫管道(pipeline)的东东对其进行了包装。
更多的信息请参考:
http://www.zdnet.com.cn/develope ... 2,39174505-5,00.htm
至于多个线程是否可以操作同一个端口的问题,首先声明我不是这方面的专家,但是我个人认为这个东西是可以的,但是应该不是楼主所说的利用空闲端口,因为client端连接到server以后,双方的ip和通信port都确定了,这样才可能建立一个通信管道,就是那个stream流,但是这时候不可能再切换到其他所谓的空闲端口,不然就意味着要server重新通过已经建立的管道,通知client我们到另外一个port口说话好吗?然后大家再建立一次连接,这个我个人认为是不可能的。而我想目前这种多个线程同时读写一个端口的实现机制应该是底层的系统例如os提供的,大体的原理应该是有一个处理tcp包的核心程序,会根据每个包上加的地址签来确定是发给那个stream或者传发给其他线程之类的,这样读写端口的其实就只有这个核心程序,而我们看到的只是上层提供的api借口,不知道我理解的对不对。 |
|