Apache Mina 2.x 简易入门解析(六)

2014-11-24 09:10:04 · 作者: · 浏览: 8


void sentMsg(String message){
session.write(message);
}


boolean close(){
CloseFuture future = session.getCloseFuture();
future.awaitUninterruptibly(1000);
connector.dispose();
return true;
}

public SocketConnector getConnector() {
return connector;
}


public IoSession getSession() {
return session;
}


/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
SimpleMinaClient client = new SimpleMinaClient();
if(client.connect()){
client.sentMsg("hello , sever !");
client.close();
}

}

}
  到这里,基本的Mina通信基础就建立好了。
  接下来实现一个客户端的GUI界面,方便实际功能的建立和信息交互的演示。

  2.2.4 Client Gui界面的建立。(ChatPanel -通过使用SimpleMinaClient来提供实际通信功能)
View Code
package com.mai.mina.diyChat;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

import org.apache.commons.lang.math.RandomUtils;

public class ChatPanel extends javax.swing.JPanel {
private JPanel northPanel;
private JLabel headLabel;
private JScrollPane jScrollPane1;
private JScrollPane jScrollPane2;
private JButton exitB;
private JButton clearMsgB;
private JButton sentB;
private JButton connectB;
private JTextArea messageText;
private JTextField nameText;
private JLabel nameLabel;
private JTextArea messageArea;
private JPanel southPanel;
private SimpleMinaClient client = null;
private boolean connected = false;
private String username = null;

{
//Set Look & Feel
try {
javax.swing.UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
} catch(Exception e) {
e.printStackTrace();
}
}

public void connect(){
if(client.connect()){
username = nameText.getText().trim();
if(username == null || "".equals(username)){
username = "游客" + RandomUtils.nextInt(1000);
nameText.setText(username);
}
connected = true;
dealUIWithFlag();
}else{
connected = false;
dealUIWithFlag();
showMsg("连接服务器失败。。。");
}
}


public void showMsg(String msg){
messageArea.append(msg);
messageArea.append("\n");
messageArea.selectAll();
messageArea.lostFocus(null, this);
}


public void sentMsg(){
String message = username + ":" + messageText.getText();
client.sentMsg(message);
messageText.setText("");
messageText.requestFocus();
}

public void dealUIWithFlag(){
if(connected){
nameText.setEnabled(false);
connectB.setEnabled(false);
sentB.setEnabled(true);
clearMsgB.setEnabled(true);
exitB.setEnabled(true);
}else{
nameText.setEnabled(true);
connectB.