新春伊始,上班码代码,看了一下自己年前的总结,发现有一个Socket通信的帮助库SocketSimple,今天就介绍一下该库的作用。

作用讲解

SocketSimple库主要是对Socket服务端实现及Socket客户端实现的封装,服务端由ServerHelper管理,客户端由ClientHelper管理;通信均采用回调模式,主要有异常回调、连接回调、消息接收回调、消息发出回调等;内部多线程并发,消息接收在独立线程,支持长连接,支持多服务端、多客户端创建等。

集成方式Jar包下载SocketSimple.jarMaven中央仓库http://search.maven.org/搜索 SocketSimple
Note:使用时版本请以Github为准。代码示例

/** * 服务端测试类 */public class Test { private static Set<String> addresses = new HashSet<String>(); public static void main(String[] args) { //创建服务器 final ServerHelper helper = ServerHelper.getInstance(true); helper.createServer(9988, new ServerCallBack() { //异常回调 @Override public void onError(Throwable error) { } //客户端连接回调 @Override public void onAccept(String address) { addresses.add(address); } //收到客户端消息回调 @Override public void onReceived(String address, byte[] result) { String x = new String(result); Iterator<String> iterator = addresses.iterator(); while (iterator.hasNext()) { String next = iterator.next(); if (!next.equals(address)) { System.out.println(x); System.out.println(next); //向客户端发送消息 helper.send(9988,next,result); } } } //向客户端发送成功回调 @Override public void onSent(String address, byte[] data) { System.out.println(new String(data)); } }); }}/** * 客户端1测试类 */public class Test1 { public static void main(String[] args) { //创建客户端1 final ClientHelper helper = ClientHelper.getInstance(true); helper.createClient("192.168.1.114", 9988, new ClientCallBack() { //异常回调 @Override public void onError(Throwable e) { } //连接服务器回调 @Override public void onConnected(final String address, final int port) { //开线程获取键盘录入(注意:因为键盘录入会堵塞线程,所以当直接在该方法使用时会导致该方法所在线程堵塞) new Thread(new Runnable() { @Override public void run() { Scanner scanner = new Scanner(System.in); while (scanner.hasNextLine()) { String s = scanner.nextLine(); if (s.equals("exit")) { //关闭客户端 helper.closeClient(address,port); //回收资源 helper.recycle(); return; } //向服务器发送消息 helper.send(address,port,s.getBytes()); } } }).start(); } //接收服务器消息回调 @Override public void onReceived(String address, int port, byte[] result) { System.out.println("Client1-Received: " + (new String(result))); } //发送服务器消息成功回调 @Override public void onSent(String address, int port, byte[] data) { String s = new String(data); System.out.println("Client1-Sent: " + s); } }); }}/** * 客户端2测试类 */public class Test2 { public static void main(String[] args) { //创建客户端2 final ClientHelper helper = ClientHelper.getInstance(false); helper.createClient("127.0.0.1", 9988, new ClientCallBack() { //异常回调 @Override public void onError(Throwable e) { } //连接服务端回调 @Override public void onConnected(final String address, final int port) { new Thread(new Runnable() { @Override public void run() { Scanner scanner = new Scanner(System.in); while (scanner.hasNextLine()) { String s = scanner.nextLine(); if (s.equals("exit")) { helper.closeClient(address,port); helper.recycle(); return; } //向服务端发送消息 helper.send(address,port,s.getBytes()); } } }).start(); } //接收服务端消息回调 @Override public void onReceived(String address, int port, byte[] result) { System.out.println("Client2-Received: " + (new String(result))); } //向服务端发送成功回调 @Override public void onSent(String address, int port, byte[] data) { System.out.println("Client2-Sent: " + (new String(data))); } });}}

Note:服务端处理两个客户端的聊天信息,两个客户端聊天示例。

结语

欢迎大家集成使用,如果对源码感兴趣,请移步Github地址,若感觉好用,请给个Star鼓励一下,使用中遇到问题请留下issues。大家如果有更好的意见或建议以及好的灵感,请邮箱作者,谢谢!

qqEmail :1535514884@qq.com

gmail :wkp15889686524@gmail.com

163Email:15889686524@163.com