1、Mina服务器怎么搭建集群
确定下你的集群提供哪个协议服务,比如TCP服务。(当然也可以多协议混搭,我的就是HTTP提供主服务,TCP提供命令管理)。然后选择一个消息格式用于RPC通信(JSON,XML,ProtocolBuffer等)这个很关键,(encode,decode)直接影响你集群的处理速度。当这些都确定后,你可以用mina写一个Slave复制多份,那么这就是一个Slave群了。我用的是小鸟云服务器,这些都是他们告诉我的。希望对你有帮助!
2、Mina服务器怎么搭建集群
确定下你的集群提供哪个协议服务,比如TCP服务。(当然也可以多协议混搭,我的就是HTTP提供主服务,TCP提供命令管理)。然后选择一个消息格式用于RPC通信(JSON,XML,ProtocolBuffer等),这个很关键,(encode,decode)直接影响你集群的处理速度。当这些都确定后,你可以用mina写一个Slave,比如就是很简单的HelloWorld,消息格式为JSON。测试ok后将这个Slave复制多份,那么这就是一个Slave群了。
3、android 作为服务器端 可以用mina么
android作为服务器端,就是可以使用mina:
public class TcpServer {
public static void main(String[] args) {
NioSocketAcceptor acceptor = new NioSocketAcceptor();
try {
acceptor.setHandler(new IoHandler() {
@Override
public void sessionOpened(IoSession session) throws Exception {
// TODO Auto-generated method stub
// iosession 客户端的session
System.out.println("open");
}
@Override
public void sessionIdle(IoSession arg0, IdleStatus arg1)
throws Exception {
// TODO Auto-generated method stub
}
@Override
public void sessionCreated(IoSession arg0) throws Exception {
// TODO Auto-generated method stub
System.out.println("create");
}
@Override
public void sessionClosed(IoSession arg0) throws Exception {
// TODO Auto-generated method stub
System.out.println("close");
}
@Override
public void messageSent(IoSession arg0, Object arg1)
throws Exception {
// TODO Auto-generated method stub
}
@Override
public void messageReceived(IoSession session, Object content)
throws Exception {
// TODO Auto-generated method stub
System.out.println("object : " + content);
}
@Override
public void exceptionCaught(IoSession arg0, Throwable arg1)
throws Exception {
// TODO Auto-generated method stub
}
});
DefaultIoFilterChainBuilder chain = acceptor.getFilterChain();
chain.addLast("logger", new LoggingFilter());
chain.addLast("codec", new ProtocolCodecFilter(
new TextLineCodecFactory(Charset.forName("utf-8"))));
acceptor.bind(new InetSocketAddress(10003));
} catch (IOException e) {
e.printStackTrace();
}
}
}
4、mina 服务器端主动发数据
方法太多了,给你提供一种吧。在handle里面重写sessionOpened方法,这个方法表示在客户端连接到服务端后,服务端该做的事。在这个方法里写个发送数据的线程。(一定要线程,不要写循环)。有疑问在M我。
5、mina socket 模拟多个client发送多条消息到服务器怎么做
建立 ClientHandler 类
public class ClientHandler extends IoHandlerAdapter {
@Override
public void exceptionCaught(IoSession session, Throwable cause)
throws Exception {
cause.printStackTrace();
}
@Override
public void messageReceived(IoSession iosession, Object message)
throws Exception {
String str=message.toString();
if(str.trim().equals("quit")){
iosession.close(true);
return;
}
Date date=new Date();
iosession.write(date.toString());
System.out.println("message written...");
}
@Override
public void sessionIdle(IoSession iosession,IdleStatus status){
System.out.println("IDLE "+iosession.getIdleCount(status));
}
@Override
public void messageSent(IoSession iosession, Object message) throws Exception {
System.out.println("send messages");
}
}
在 Client 实现的类里
try {
address = new InetSocketAddress("IP地址", 端口);
connector.getFilterChain().addLast("mdc", new MdcInjectionFilter());
connector.getFilterChain().addLast("codec",
new ProtocolCodecFilter(new TextLineCodecFactory()));
connector.getFilterChain().addLast("logger", new LoggingFilter());
connector.setHandler(handler);
future1 = connector.connect(address);
future1.awaitUninterruptibly();
if (!future1.isConnected()) {
System.out.println("not connect");
return false;
}
} catch (Exception e) {
e.printStackTrace();
return false;
}
然后new 几个 client类 就行
6、java mina 怎么打成jar包放在服务器上呀~~
打开记事本输入
Manifest-Version: 1.0
Main-Class: xxx
其中 xxx 是你 public static void main 所在的class
然后另存为 1.mf
接着在你class所在的文件夹下 进行打包
jar -cvmf 1.mf 输出名.jar *.class
这样当前文件夹下的所有class都被打包了起来
你双击那个.jar包 就可以运行了
如果使用了package 别忘了加前缀
7、请问MINA服务器怎么和Tomcat进行通信?
问题补充:谢谢etank的回答。具体情况是这样的:一个webgame,逻辑服务器用的Tomcat,聊天内服务器是用Mina实现的另容外一个单独的Application,现在的需求时聊天服务器想从Tomcat web服务器那里获得玩家的一些数据,比如队友啥的。这样就要聊天服务器能够和web服务器进行通讯。你说的向web服务器发送http请求是可行的,但是就是不知道性能如何?
我想到的另外一种方法是在Tomcat里开一个socket线程和聊天服务器一直保持联系,如果玩家队友发生变化,web服务器就将新的队友信息通过socket发送给聊天服务器,感觉这样性能会更好些,呵呵。
8、mina服务器 messageReceived接收数据不全
mina粘包丢包问题,自定义编码解码规则啊,大致思路就是 在发送数据包的开头用4位(自己定义)表示报文的长度,在解码的时候,先获取前四位,查看报文有多大,如果这次接收的报文没有达到该长度,则等待下一次接收。 几年前用mina的时候遇到过这种问题,希望能帮到你
9、mina框架必须客户端跟服务器端配套使用吗?
当然可以啦,mina只不过是对java nio作了一层封装,更便于开发者使用;但一般服务器才会采用,客户端使用的话就跟拿着大炮打蚊子一样了,没必要