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作了一層封裝,更便於開發者使用;但一般伺服器才會採用,客戶端使用的話就跟拿著大炮打蚊子一樣了,沒必要