Android搭建简单的socket服务器——基于TCP
来源:互联网 发布:windows 10显卡是多少 编辑:程序博客网 时间:2024/05/29 13:37
移动端基本上用http很多, 很少接触socket编程,对于在android端作为服务器更少,最近因为项目需要,要在android端搭建服务器,中转智能硬件发来的数据,所以把大学里边学习socket代码整理了下,写了个socket的简易服务器,实现了客户端连接到服务器,发送文本信息,服务器回传给客户端,有木有感觉像大学课设
废话不多说上代码..........................
import java.io.IOException;import java.io.InputStream;import java.net.InetSocketAddress;import java.net.ServerSocket;import java.net.Socket;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class MySocketServer { private boolean isEnable; private final WebConfig webConfig;//配置信息类 private final ExecutorService threadPool;//线程池 private ServerSocket socket; public MySocketServer(WebConfig webConfig) { this.webConfig = webConfig; threadPool = Executors.newCachedThreadPool(); } /** * 开启server */ public void startServerAsync() { isEnable=true; new Thread(new Runnable() { @Override public void run() { doProcSync(); } }).start(); } /** * 关闭server */ public void stopServerAsync() throws IOException { if (!isEnable){ return; } isEnable=true; socket.close(); socket=null; } private void doProcSync() { try { InetSocketAddress socketAddress=new InetSocketAddress(webConfig.getPort()); socket=new ServerSocket(); socket.bind(socketAddress); while (isEnable){ final Socket remotePeer= socket.accept(); threadPool.submit(new Runnable() { @Override public void run() { LLogger.e("remotePeer..............."+remotePeer.getRemoteSocketAddress().toString()); onAcceptRemotePeer(remotePeer); } }); } } catch (IOException e) { e.printStackTrace(); } } private void onAcceptRemotePeer(Socket remotePeer) { try { remotePeer.getOutputStream().write("connected successful".getBytes());//告诉客户端连接成功 // 从Socket当中得到InputStream对象 InputStream inputStream = remotePeer.getInputStream(); byte buffer[] = new byte[1024 * 4]; int temp = 0; // 从InputStream当中读取客户端所发送的数据 while ((temp = inputStream.read(buffer)) != -1) { LLogger.e(new String(buffer, 0, temp,"UTF-8")); remotePeer.getOutputStream().write(buffer,0,temp);//把客户端传来的消息发送回去 } } catch (IOException e) { e.printStackTrace(); } }
配置信息类
public class WebConfig { private int port;//端口 private int maxParallels;//最大监听数 public int getPort() { return port; } public void setPort(int port) { this.port = port; } public int getMaxParallels() { return maxParallels; } public void setMaxParallels(int maxParallels) { this.maxParallels = maxParallels; }}
然后在activity中onCreate方法在开启服务即可
WebConfig webConfig = new WebConfig(); webConfig.setPort(9001); webConfig.setMaxParallels(10); mySocketServer = new MySocketServer(webConfig); mySocketServer.startServerAsync();
别忘了在onDestroy中关闭
try { mySocketServer.stopServerAsync(); } catch (IOException e) { e.printStackTrace(); } super.onDestroy(); }
如果觉得帮助,欢迎打赏!
5 0
- Android搭建简单的socket服务器——基于TCP
- 基于TCP的简单服务器
- Socket网络程序设计(1) ———— 基于TCP协议的客户-服务器socket实例
- 基于TCP协议的socket服务器
- 基于TCP 的服务器、、客户端(socket)
- 基于LwIP socket的TCP服务器
- 基于TCP socket的HTTP服务器
- 基于tcp的简单socket通信
- 基于TCP的简单socket通信
- java基于socket tcp的简单聊天室
- 基于socket的tcp回射服务器的小程序——Linux
- socket编程之简单的TCP服务器
- VLC搭建基于TCP的流媒体服务器
- 【简单Web服务器搭建】基于Socket实现的最简单的Web服务器【ASP.NET原理分析】
- 【简单Web服务器搭建】基于Socket实现的最简单的Web服务器【ASP.NET原理分析】
- 利用Socket搭建简单的Http服务器
- Android基础入门教程——7.6.2 基于TCP协议的Socket通信(1)
- Android基础入门教程——7.6.3 基于TCP协议的Socket通信(2)
- Qt 获取网络gif图片并保存到本地显示
- 程序员,都去写一写前端代码吧
- 瑜伽微信公众号如何轻松搭建微信预约系统
- 利用反射重写toString()方法
- sql语句判断两个时间段是否有交集
- Android搭建简单的socket服务器——基于TCP
- 数据结构3
- redis如何删除过期数据
- ActiveMQ 使用场景
- 第六章:学习dubbo中遇见的问题
- JavaEE开发之Spring中的条件注解、组合注解与元注解
- 忘了哪个大神的博客的滑动刷新带有弹簧效果的ScrollView
- 关于「E: dpkg 被中断,您必须手工运行 ‘sudo dpkg --configure -a’ 」
- ubuntu火狐浏览器安装flash插件——官网下载安装方法