-
Mina 简单开发四部曲 1.创建NioSocketAcceptor对象 NioSocketAcceptor nsa = new NioSocketAcceptor() 2.设置自己的消息处理器 nsa.setHandler(new MyServerHandler) 3.配置处理消息转换的拦截器 nsa.getFilterChain().addLast("codec",new ProtocolCodeFilter(new TextLineCodeFactory()) 4.绑定端口,开启服务 nsa.bind(new InetSocketAddress(9898)) Mina 同时提供了网络通信的Server 端、Client 端的封装,无论是哪端,Mina 在整个网通通信结构中都处于如下的位置:可见Mina 的API 将真正的网络通信与我们的应用程序隔离开来,你只需要关心你要发送、接收的数据以及你的业务逻辑即可。同样的,无论是哪端,Mina 的执行流程如下所示: (1.) IoService:这个接口在一个线程上负责套接字的建立,拥有自己的Selector,监听是否有连接被建立。 (2.) IoProcessor:这个接口在另一个线程上,负责检查是否有数据在通道上读写,也就是说它也拥有自己的Selector,这是与我们使用JAVA NIO 编码时的一个不同之处,通常在JAVA NIO 编码中,我们都是使用一个Selector,也就是不区分IoService与IoProcessor 两个功能接口。另外,IoProcessor 负责调用注册在IoService 上的过滤器,并在过滤器链之后调用IoHandler。 (3.) IoFilter:这个接口定义一组拦截器,这些拦截器可以包括日志输出、黑名单过滤、数据的编码(write 方向)与解码(read 方向)等功能,其中数据的encode 与decode是最为重要的、也是你在使用Mina 时最主要关注的地方。 (4.) IoHandler:这个接口负责编写业务逻辑,也就是接收、发送数据的地方。查看全部
-
长连接:是指客户端和服务器之间始终建立着一个通信连接,在连接没有中断之前,客户端和服务器端之间可以随时进行通信。如socket协议,即时通讯,推送原理。 短连接:是指通讯双方有数据交互时,就建立一个连接,数据发送完成后,则断开此连接。如http协议。查看全部
-
老师讲的有着点很好,特别是针对通信机制的一些问题查看全部
-
IQ结构查看全部
-
message结构查看全部
-
presence结构(二)查看全部
-
presence结构查看全部
-
XML Stanza通用属性查看全部
-
XMPP的身份标识查看全部
-
XMPP基础知识查看全部
-
什么事XMPP协议查看全部
-
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
提交
取消