`
cuker919
  • 浏览: 99140 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

XSocket的学习和总结

 
阅读更多
xSocket是一个易于使用的基于NIO库来构建高性能,可扩展的网络应用。它支持写入以及服务器端的应用,以直观的方式客户端应用程序。检测问题,如低水平NIO选择编程,连接池管理,连接超时被封装的xSocket。

我从它的官网上面下载了两个JAR一个是其核心JAR包xSocket (core)

另外一个JAR包是:xSocket multiplexed

先掌握其core部分然后再去学习其扩展部分的功能!

随着xSocket你可以编写高性能,可扩展的客户端和服务器组件的自定义协议如SMTP服务器,代理服务器或客户端和服务器组件是一个基于。

IDataHandler :服务端或者客户端端数据处理类;

IConnectHandler 服务端或者客户端连接成功是处理操作。

IIdleTimeoutHandler 请求处理超时才操作。

IConnectionTimeoutHandler连接超时的操作

IDisconnectHandler 连接断开时的操作

IBlockingConnection阻塞模式的连接
INonblockingConnection 非阻塞模式的连接

XSocket的ongoing实例:

服务端数据处理类:

Java代码 收藏代码
  1. packagecom.easyway.space.sockets.xsocket;
  2. importjava.io.IOException;
  3. importjava.nio.BufferUnderflowException;
  4. importjava.nio.channels.ClosedChannelException;
  5. importorg.xsocket.MaxReadSizeExceededException;
  6. importorg.xsocket.connection.IConnectHandler;
  7. importorg.xsocket.connection.IConnectionTimeoutHandler;
  8. importorg.xsocket.connection.IDataHandler;
  9. importorg.xsocket.connection.IDisconnectHandler;
  10. importorg.xsocket.connection.IIdleTimeoutHandler;
  11. importorg.xsocket.connection.INonBlockingConnection;
  12. /**
  13. *服务端定义数据的处理类
  14. *@authorlonggangbai
  15. *
  16. */
  17. publicclassServerHandlerimplementsIDataHandler,IConnectHandler,IIdleTimeoutHandler,IConnectionTimeoutHandler,IDisconnectHandler{
  18. /**
  19. *即当建立完连接之后可以进行的一些相关操作处理。包括修改连接属性、准备资源、等!
  20. *连接的成功时的操作
  21. */
  22. @Override
  23. publicbooleanonConnect(INonBlockingConnectionnbc)throwsIOException,
  24. BufferUnderflowException,MaxReadSizeExceededException{
  25. StringremoteName=nbc.getRemoteAddress().getHostName();
  26. System.out.println("服务器信息 : 客户端 " + remoteName + " 已经连接...");
  27. returntrue;
  28. }
  29. /**
  30. *即如果失去连接应当如何处理?
  31. *需要实现IDisconnectHandler这个接口
  32. *连接断开时的操作
  33. */
  34. @Override
  35. publicbooleanonDisconnect(INonBlockingConnectionnbc)throwsIOException{
  36. // String remoteName=nbc.getRemoteAddress().getHostName();

    // System.out.println("服务器信息:客户端 "+remoteName+" 已经断开.");


  37. returnfalse;
  38. }
  39. /**
  40. *即这个方法不光是说当接收到一个新的网络包的时候会调用而且如果有新的缓存存在的时候也会被调用。而且
  41. *TheonDatawillalsobecalled,iftheconnectionisclosed当连接被关闭的时候也会被调用的!
  42. */
  43. @Override
  44. publicbooleanonData(INonBlockingConnectionnbc)throwsIOException,
  45. BufferUnderflowException,ClosedChannelException,
  46. MaxReadSizeExceededException{
  47. Stringdata=nbc.readStringByDelimiter("|");
  48. nbc.write("--|server:receivedatafromclientsucessful|-----");
  49. nbc.flush();
  50. System.out.println(data);
  51. returntrue;
  52. }
  53. /**
  54. *请求处理超时的处理事件
  55. */
  56. @Override
  57. publicbooleanonIdleTimeout(INonBlockingConnectionconnection)throwsIOException{
  58. //TODOAuto-generatedmethodstub
  59. returnfalse;
  60. }
  61. /**
  62. *连接超时处理事件
  63. */
  64. @Override
  65. publicbooleanonConnectionTimeout(INonBlockingConnectionconnection)throwsIOException{
  66. //TODOAuto-generatedmethodstub
  67. returnfalse;
  68. }
  69. }

服务端类:

Java代码 收藏代码
  1. packagecom.easyway.space.sockets.xsocket;
  2. importjava.net.InetAddress;
  3. importjava.util.Map;
  4. importjava.util.Map.Entry;
  5. importorg.xsocket.connection.IServer;
  6. importorg.xsocket.connection.Server;
  7. importorg.xsocket.connection.IConnection.FlushMode;
  8. /**
  9. *采用XSocket通讯的服务端
  10. *@authorlonggangbai
  11. *
  12. */
  13. publicclassXSocketServer{
  14. /**设置当前的端口*/
  15. privatestaticfinalintPORT=8014;
  16. publicstaticvoidmain(String[]args)throwsException{
  17. //注意其构造方法有多个。一般是使用这种构造方法出来的!
  18. //不过要注意一下java.net.InetAddress这个类的使用在初始化的时候需要捕获异常
  19. //可能是这个绑定的主机可能不存在之类的异常即UnknowHostNameException
  20. InetAddressaddress=InetAddress.getByName("localhost");
  21. //创建一个服务端的对象
  22. IServersrv=newServer(address,PORT,newServerHandler());
  23. //设置当前的采用的异步模式
  24. srv.setFlushmode(FlushMode.ASYNC);
  25. try{
  26. //srv.run();
  27. //thecallwillnotreturn
  28. //...orstartitbyusingadedicatedthread
  29. srv.start();//returnsaftertheserverhasbeenstarted
  30. System.out.println("服务器"+srv.getLocalAddress()+":"+PORT);
  31. Map<String,Class>maps=srv.getOptions();
  32. if(maps!=null){
  33. for(Entry<String,Class>entry:maps.entrySet()){
  34. System.out.println("key="+entry.getKey()+"value="+entry.getValue().getName());
  35. }
  36. }
  37. System.out.println("日志:"+srv.getStartUpLogMessage());
  38. }catch(Exceptione){
  39. System.out.println(e);
  40. }
  41. }
  42. }

客户端数据处理类:

Java代码 收藏代码
  1. packagecom.easyway.space.sockets.xsocket;
  2. importjava.io.IOException;
  3. importjava.nio.BufferUnderflowException;
  4. importjava.nio.channels.ClosedChannelException;
  5. importorg.xsocket.MaxReadSizeExceededException;
  6. importorg.xsocket.connection.IConnectHandler;
  7. importorg.xsocket.connection.IDataHandler;
  8. importorg.xsocket.connection.IDisconnectHandler;
  9. importorg.xsocket.connection.INonBlockingConnection;
  10. /**
  11. *客户端定义数据的处理类
  12. *@authorlonggangbai
  13. *
  14. */
  15. publicclassClientHandlerimplementsIDataHandler,IConnectHandler,IDisconnectHandler{
  16. /**
  17. *连接的成功时的操作
  18. */
  19. @Override
  20. publicbooleanonConnect(INonBlockingConnectionnbc)throwsIOException,
  21. BufferUnderflowException,MaxReadSizeExceededException{
  22. StringremoteName=nbc.getRemoteAddress().getHostName();
  23. System.out.println("remoteName"+remoteName+"hasconnected!");
  24. returntrue;
  25. }
  26. /**
  27. *连接断开时的操作
  28. */
  29. @Override
  30. publicbooleanonDisconnect(INonBlockingConnectionnbc)throwsIOException{
  31. //TODOAuto-generatedmethodstub
  32. returnfalse;
  33. }
  34. /**
  35. *
  36. *接收到数据库时候的处理
  37. */
  38. @Override
  39. publicbooleanonData(INonBlockingConnectionnbc)throwsIOException,
  40. BufferUnderflowException,ClosedChannelException,
  41. MaxReadSizeExceededException{
  42. Stringdata=nbc.readStringByDelimiter("|");
  43. nbc.write("--|Client:receivedatafromserversucessful|-----");
  44. nbc.flush();
  45. System.out.println(data);
  46. returntrue;
  47. }
  48. }

客户端类:

Java代码 收藏代码
  1. packagecom.easyway.space.sockets.xsocket;
  2. importjava.io.IOException;
  3. importorg.xsocket.connection.BlockingConnection;
  4. importorg.xsocket.connection.IBlockingConnection;
  5. importorg.xsocket.connection.INonBlockingConnection;
  6. importorg.xsocket.connection.NonBlockingConnection;
  7. /**
  8. *客户端接收服务端信息
  9. *@authorlonggangbai
  10. *IBlockingConnection:这个的话就是不支持事件回调处理机制的!
  11. *INonBlockingConnection:这个连接支持回调机制
  12. *
  13. *非阻塞的客户端是能够支持事件处理的方法的。即如果从网络通道中没有取到想要的数据就会自动退出程序
  14. */
  15. publicclassXSocketClient{
  16. privatestaticfinalintPORT=8014;
  17. publicstaticvoidmain(String[]args)throwsIOException{
  18. //采用非阻塞式的连接
  19. INonBlockingConnectionnbc=newNonBlockingConnection("localhost",PORT,newClientHandler());
  20. //采用阻塞式的连接
  21. //IBlockingConnectionbc=newBlockingConnection("localhost",PORT);
  22. //一个非阻塞的连接是很容易就变成一个阻塞连接
  23. IBlockingConnectionbc=newBlockingConnection(nbc);
  24. //设置编码格式
  25. bc.setEncoding("UTF-8");
  26. //设置是否自动清空缓存
  27. bc.setAutoflush(true);
  28. //向服务端写数据信息
  29. for(inti=0;i<100;i++){
  30. bc.write("client|i|love|china!..."+i);
  31. }
  32. //向客户端读取数据的信息
  33. byte[]byteBuffers=bc.readBytesByDelimiter("|","UTF-8");
  34. //打印服务器端信息
  35. System.out.println(newString(byteBuffers));
  36. //将信息清除缓存,写入服务器端
  37. bc.flush();
  38. bc.close();
  39. }
  40. }


分享到:
评论

相关推荐

    xsocket源码和socket源码,文档

    总之,这个资源包为你提供了一个很好的学习平台,通过实践和研究源码,你将能够深入理解Socket和XSocket编程,进一步提升你的网络编程技能。记得要结合理论知识和实际操作,才能更好地消化和掌握这些内容。

    xSocket api 2.6.6version

    xSocket api 2.6.6version

    NIO网络框架 xSocket

    NIO网络框架 xSocket

    xsocket NIO框架示例

    xsocket NIO框架示例 resources 中有相关的 资料。telnet服务测试教程。和相关jar

    ws(websocket)例子(xsocket\xlightweb)

    总结来说,这个压缩包提供的示例可能包括了如何使用xsocket和xlightweb库在服务器端和客户端实现WebSocket通信的具体代码。通过学习这些示例,开发者可以更好地理解WebSocket的工作原理,以及如何在实际项目中应用这...

    tcp协议使用xsocket的demo

    "tcp协议使用xsocket的demo"是一个实践性强、教学价值高的项目,它涵盖了SpringBoot、TCP通信和模块化开发等多个核心知识点,对于想要深入了解Java网络编程和SpringBoot集成的开发者来说,这是一个极好的学习资源。

    xsocket 2.5.4 源代码

    xSocket-2.5.4-sources.jar , 2.5.4版的源代码jar包,引入项目即可查看

    XSocket.rar

    总的来说,XSocket.rar文件提供了关于Socket编程、TCP/IP协议实现、客户端和服务器端交互以及多播功能的实战示例,对于学习和开发网络通信应用的程序员来说,这是一个宝贵的资源。通过研究这个项目,开发者可以深入...

    xsocket.jar包

    socket通讯框架xsocket所需的jar包

    xsocket使用指南

    下面是 xSocket 的一些核心功能和使用指南: 核心功能 xSocket 的核心功能支持面向流通信,主要抽象是 Connection 接口。通过 IBlockingConnection 或者 INonblockingConnection 对象进行数据的读写。在 record ...

    xSocket-2.8.1.jar

    xSocket是一个轻量级的基于nio的服务器框架用于开发高性能、可扩展、多线程的服务器。该框架封装了线程处理、异步读/写等方面。

    轻量级JAVA scoket 服务器XSOCKET

    轻量级JAVA scoket 服务器XSOCKET

    java源码:NIO网络框架 xSocket.rar

    Java NIO(New Input/Output)网络框架是一...通过学习和使用xSocket框架,开发者可以更好地理解和应用Java NIO,创建出高效、可靠的网络应用程序。在实际开发中,结合NIO的特性,可以显著提升网络应用的性能和稳定性。

    xsocket.7z

    它通过抽象出统一的API,隐藏了底层操作系统差异,降低了开发者的学习曲线和维护成本。 XSocket的核心特性在于其对Socket操作的封装。在C语言原生的Socket API中,开发者需要处理许多低级别的细节,如错误检查、套...

    xSocket sources

    提到的三个文件分别代表了xSocket的不同版本:`xSocket-2.1.2-sources.jar` 包含的是2.1.2版本的源代码,这对于学习和调试非常有用;`xSocket-2.7.2.jar` 可能是一个更新的二进制版本,可能包含了更多的功能和优化...

    NIO网络框架 xSocket.7z

    3. 文档资料:包含了框架的使用指南、API文档以及设计原理等,帮助开发者更好地学习和使用xSocket。 4. 测试用例:验证框架功能的正确性,可作为开发过程中参考和调试的依据。 5. 配置文件:可能包含服务器配置、...

    基于java的开发源码-NIO网络框架 xSocket.zip

    基于java的开发源码-NIO网络框架 xSocket.zip 基于java的开发源码-NIO网络框架 xSocket.zip 基于java的开发源码-NIO网络框架 xSocket.zip 基于java的开发源码-NIO网络框架 xSocket.zip 基于java的开发源码-NIO网络...

    xSocket-multiplexed-2.1.5-sources.jar

    xSocket-multiplexed-2.1.5-sources.jarxSocket-multiplexed-2.1.5-sources.jarxSocket-multiplexed-2.1.5-sources.jarxSocket-multiplexed-2.1.5-sources.jarxSocket-multiplexed-2.1.5-sources.jarxSocket-...

Global site tag (gtag.js) - Google Analytics