-
Mina 簡單開發(fā)四部曲 1.創(chuàng)建NioSocketAcceptor對象 NioSocketAcceptor nsa = new NioSocketAcceptor() 2.設(shè)置自己的消息處理器 nsa.setHandler(new MyServerHandler) 3.配置處理消息轉(zhuǎn)換的攔截器 nsa.getFilterChain().addLast("codec",new ProtocolCodeFilter(new TextLineCodeFactory()) 4.綁定端口,開啟服務(wù) nsa.bind(new InetSocketAddress(9898)) Mina 同時提供了網(wǎng)絡(luò)通信的Server 端、Client 端的封裝,無論是哪端,Mina 在整個網(wǎng)通通信結(jié)構(gòu)中都處于如下的位置:可見Mina 的API 將真正的網(wǎng)絡(luò)通信與我們的應(yīng)用程序隔離開來,你只需要關(guān)心你要發(fā)送、接收的數(shù)據(jù)以及你的業(yè)務(wù)邏輯即可。同樣的,無論是哪端,Mina 的執(zhí)行流程如下所示: (1.) IoService:這個接口在一個線程上負責套接字的建立,擁有自己的Selector,監(jiān)聽是否有連接被建立。 (2.) IoProcessor:這個接口在另一個線程上,負責檢查是否有數(shù)據(jù)在通道上讀寫,也就是說它也擁有自己的Selector,這是與我們使用JAVA NIO 編碼時的一個不同之處,通常在JAVA NIO 編碼中,我們都是使用一個Selector,也就是不區(qū)分IoService與IoProcessor 兩個功能接口。另外,IoProcessor 負責調(diào)用注冊在IoService 上的過濾器,并在過濾器鏈之后調(diào)用IoHandler。 (3.) IoFilter:這個接口定義一組攔截器,這些攔截器可以包括日志輸出、黑名單過濾、數(shù)據(jù)的編碼(write 方向)與解碼(read 方向)等功能,其中數(shù)據(jù)的encode 與decode是最為重要的、也是你在使用Mina 時最主要關(guān)注的地方。 (4.) IoHandler:這個接口負責編寫業(yè)務(wù)邏輯,也就是接收、發(fā)送數(shù)據(jù)的地方。查看全部
-
長連接:是指客戶端和服務(wù)器之間始終建立著一個通信連接,在連接沒有中斷之前,客戶端和服務(wù)器端之間可以隨時進行通信。如socket協(xié)議,即時通訊,推送原理。 短連接:是指通訊雙方有數(shù)據(jù)交互時,就建立一個連接,數(shù)據(jù)發(fā)送完成后,則斷開此連接。如http協(xié)議。查看全部
-
老師講的有著點很好,特別是針對通信機制的一些問題查看全部
-
IQ結(jié)構(gòu)查看全部
-
message結(jié)構(gòu)查看全部
-
presence結(jié)構(gòu)(二)查看全部
-
presence結(jié)構(gòu)查看全部
-
XML Stanza通用屬性查看全部
-
XMPP的身份標識查看全部
-
XMPP基礎(chǔ)知識查看全部
-
什么事XMPP協(xié)議查看全部
-
server->client: server: writer=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); while((receiveMsg=reader.readLine())!=null){ System.out.println(receiveMsg); writer.write("server reply"+receiveMsg+"\n"); writer.flush(); } client: reader=new BufferedReader(new InputStreamReader(socket.getInputStream())); while(!(inputContent=inputReader.readLine()).equals("bye")){ writer.write(inputContent+"\n");//一定要加\n writer.flush(); String res=reader.readLine(); System.out.println(res); }查看全部
-
server: public void startServer() { ServerSocket serverSocket; BufferedReader reader; try { serverSocket=new ServerSocket(6898); System.out.println("server started..."); Socket socket = serverSocket.accept(); System.out.println("client "+socket.hashCode()+"connected"); reader=new BufferedReader(new InputStreamReader(socket.getInputStream())); String receiveMsg; while((receiveMsg=reader.readLine())!=null){ System.out.println(receiveMsg); } } catch (Exception e) { e.printStackTrace(); } } }查看全部
-
client: private void start() { BufferedReader inputReader = null; Socket socket = null; BufferedWriter writer = null; try { socket=new Socket("localhost",6898); inputReader=new BufferedReader(new InputStreamReader(System.in)); writer=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); String inputContent; while(!(inputContent=inputReader.readLine()).equals("bye")){ writer.write(inputContent+"\n");//一定要加\n writer.flush(); } } catch (IOException e) { e.printStackTrace(); }finally{ try { inputReader.close(); socket.close(); writer.close(); } catch (IOException e) { e.printStackTrace(); } } } }查看全部
-
socketServer.java: public class SocketServer { /** * @param args */ public static void main(String[] args) { SocketServer socketServer=new SocketServer(); socketServer.startServer(); } public void startServer() { ServerSocket serverSocket; BufferedReader reader; try { serverSocket=new ServerSocket(6898); Socket socket = serverSocket.accept(); reader=new BufferedReader(new InputStreamReader(socket.getInputStream())); String receiveMsg; while((receiveMsg=reader.readLine())!=null){ System.out.println(receiveMsg); } } catch (Exception e) { e.printStackTrace(); } } }查看全部
舉報
0/150
提交
取消