blob: de8d10995ab041531a934b60ec260bc65989cdad [file] [log] [blame]
/*
* Copyright 1999-2011 Alibaba Group.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.alibaba.dubbo.remoting.p2p;
import java.util.Collection;
import com.alibaba.dubbo.remoting.Channel;
import com.alibaba.dubbo.remoting.RemotingException;
import com.alibaba.dubbo.remoting.transport.ChannelHandlerAdapter;
/**
* PeerMain
*
* @author william.liangf
*/
public class PeerMain {
public static void main(String[] args) throws Throwable {
String groupURL = "multicast://224.5.6.7:9911"; // 组地址,支持multicast和file两种组 ,可扩展
final String peerURL = "dubbo://0.0.0.0:" + (((int) (Math.random() * 10000)) + 20000); // 用于交叉组网的本机服务器地址
// 加入组,并获取对等引用
Peer peer = Networkers.join(groupURL, peerURL, new ChannelHandlerAdapter(){
@Override
public void received(Channel channel, Object message) throws RemotingException {
System.out.println("Received: " + message + " in " + peerURL);
}
});
// 向网络中存在的其它对等体发送消息
for (int i = 0; i < Integer.MAX_VALUE; i ++) {
Collection<Channel> channels = peer.getChannels(); // 获取与其它所有对等体的通道,此列表动态变化
if (channels != null && channels.size() > 0) {
for (Channel channel : channels) {
channel.send("(" + i + ") " + peerURL); // 向指定对等体发送消息
}
}
Thread.sleep(1000);
}
// 离开网络
peer.leave();
}
}