前言

之前做了一个STM32+ESP8266实现远程控制LED的小试验,里面用到了网络调试助手的TCP客户端,看了一些教程,尝试自己写一个TCP客户端调试助手,记录如下,仅供参考

目录

  • 前言
  • 一、界面布局
  • 二、MainActivity
  • 三、改APP图标、名字
  • 四、工程文件

一、界面布局

代码如下:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:padding="15dp"android:background="@drawable/bac3"
><EditTextandroid:id="@+id/et_1"android:layout_width="match_parent"android:layout_height="50dp"android:textSize="16sp"android:textColor="#FFFFFF"android:hint="IP地址"android:textColorHint="#FFFFFF"android:paddingLeft="10dp"android:paddingRight="10dp"android:background="@drawable/ipadress"android:layout_margin="10dp"/><EditTextandroid:id="@+id/et_2"android:layout_width="match_parent"android:layout_height="50dp"android:layout_below="@id/et_1"android:textSize="16sp"android:textColor="#FFFFFF"android:hint="端口号"android:textColorHint="#FFFFFF"android:paddingLeft="10dp"android:paddingRight="10dp"android:background="@drawable/ipadress"android:layout_margin="10dp"/><Buttonandroid:id="@+id/connect"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_below="@id/et_2"android:background="@drawable/anjian"android:layout_marginTop="40dp"android:text="连接"android:textSize="24dp"android:textColor="#A59493"/><TextViewandroid:id="@+id/send_receive"android:layout_width="match_parent"android:layout_height="350sp"android:layout_marginTop="10dp"android:layout_below="@id/connect"android:singleLine="false"android:scrollbars="vertical"android:fadeScrollbars="false"android:padding="5dp"android:textColor="#FFFFFF"/><Buttonandroid:id="@+id/send"android:layout_width="80dp"android:layout_height="50dp"android:text="发送"android:textColor="#A59493"android:textSize="20dp"android:layout_alignParentBottom="true"android:layout_alignParentRight="true"android:background="@drawable/anjian"android:layout_marginLeft="5dp"/><EditTextandroid:id="@+id/content"android:layout_width="300dp"android:layout_height="50dp"android:layout_toLeftOf="@id/send"android:layout_alignParentBottom="true"android:background="@drawable/ipadress"android:padding="10dp"android:textColor="#FFFFFF"/>
</RelativeLayout>

有一些要注意的地方是:
1、 因为我改了背景,所以首先要把自己的背景图放到res/drawable中,然后在bulid.gradle中加入下面的代码

    aaptOptions.cruncherEnabled = falseaaptOptions.useNewCruncher = false

如图:

2、 把软件下到手机上发现APP顶部有一块蓝色部分,搜了一下怎么去掉,方法是在res/values/styles.xml中把DarkActionBar改成NoActionBar
如图:

3、 还有一个地方是,为了让我们接收发送的消息可以滚动,在下面的那个TextView中需要加这几个属性

二、MainActivity

代码如下:

public class MainActivity extends AppCompatActivity {private Button bt1;private EditText et1;private EditText et2;private  Button bt2;private EditText et3;private TextView receive;private String ip;private int port;boolean connected = false;public Socket socket = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);et1 = (EditText) findViewById(R.id.et_1);et2 = (EditText) findViewById(R.id.et_2);et3 = (EditText) findViewById(R.id.content);bt1 = (Button) findViewById(R.id.connect);bt2 = (Button) findViewById(R.id.send);receive = (TextView) findViewById(R.id.send_receive);receive.setMovementMethod(ScrollingMovementMethod.getInstance());  //滚动显示bt1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if(connected == false){ConnectThread ct = new ConnectThread();ct.start();return;}else{bt1.setText("连接");                    connected = false;try{socket.close();}catch (IOException e){e.printStackTrace();}}}});bt2.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Log.v("发送事件","开始发送");if(bt1.getText().toString().equals("断开连接")){sendComd(et3.getText().toString());receive.append("Send : "+et3.getText().toString()+"\n");int offset=receive.getLineCount()*receive.getLineHeight();  //滚动显示if(offset>receive.getHeight()){receive.scrollTo(0,offset-receive.getHeight());}}et3.setText("");}});}class ConnectThread extends Thread{public void run() {try{//从编辑框获得地址和端口InetAddress ipAddress = InetAddress.getByName(et1.getText().toString());int port = Integer.valueOf(et2.getText().toString());socket = new Socket(ipAddress,port);connected = true;runOnUiThread(new Runnable() {@Overridepublic void run() {bt1.setText("断开连接");}});try{OutputStream outputStream = socket.getOutputStream();outputStream.write("connect".getBytes());//发送connect数据给服务端令其做好准备}catch (IOException e){e.printStackTrace();}ReceiveThread rt = new ReceiveThread();//启动接收线程rt.start();Looper.prepare();Toast.makeText(MainActivity.this,"连接成功",Toast.LENGTH_SHORT).show();Looper.loop();}catch (UnknownHostException e){Looper.prepare();Toast.makeText(MainActivity.this,"连接失败",Toast.LENGTH_SHORT).show();Looper.loop();e.printStackTrace();}catch (IOException e){Looper.prepare();Toast.makeText(MainActivity.this,"连接失败",Toast.LENGTH_SHORT).show();Looper.loop();e.printStackTrace();}}}public void sendComd(final String cmd){new Thread(){public void run(){try {OutputStream os = socket.getOutputStream();os.write(cmd.getBytes());} catch (Exception e) {Log.v("发送事件","发送异常");// TODO Auto-generated catch blocke.printStackTrace();}}}.start();}class ReceiveThread extends Thread{public void run(){if(socket != null){try{while(true){final byte[] buffer = new byte[1024];InputStream inputStream = socket.getInputStream();final int len = inputStream.read(buffer);if(len == -1){socket.close();socket=null;connected = false;runOnUiThread(new Runnable() {@Overridepublic void run() {bt1.setText("connect");}});return;}final String viewdata = new String(buffer,"UTF-8");runOnUiThread(new Runnable() {@Overridepublic void run() {receive.append("Receive : "+viewdata+"\n");int offset=receive.getLineCount()*receive.getLineHeight();  //滚动显示if(offset>receive.getHeight()){receive.scrollTo(0,offset-receive.getHeight());}}});}}catch (IOException e){e.printStackTrace();}}}}}

注意: 因为我们用到了网络,所以我们要在 AndroidManifest.xml 中加入以下代码

 <uses-permission android:name="android.permission.INTERNET" />

如图:

三、改APP图标、名字

这个其实很简单,也是在 AndroidManifest.xml 中更改,把图标放到相应的文件中,这里我是放在mipmap里
如图:

四、工程文件

最后把工程文件分享出来,需要的自取
链接:https://pan.baidu.com/s/13Ib1N6TLxxbkCHfAwM2cbg
提取码:gs8x

好的,本次记录就到这里了

Android TCP客户端调试助手相关推荐

  1. Android studio TCP网络调试助手应用开发(支持TCP Server与Client切换)

    在前几篇的文章中带大家完成了基于TCP的物联网安卓应用开发,教程内容是创建了一个TCP客户端并连接服务器完成数据通信的过程,后不久又发布了一个ESP8266创建TCP 服务器与安卓的客户端进行通信的一 ...

  2. QT编写TCP/UDP调试助手之TCP客户端

    效果图: TCP/UDP调试助手之TCP客户端,支持错误信息显示,断开连接后及时释放资源. 一.关键代码 1.在.pro文件中添加QT += network,包含头文件#include <QTc ...

  3. Qt - MQTT客户端调试助手

    Qt - MQTT客户端调试助手 Qt5.9.4 MinGW开发,MQTT调试助手,源码和软件下载链接如下: 源码地址:https://gitee.com/jhuangBTT/MQTT-Client ...

  4. Qt实践录:TCP网络调试助手

    由于项目需要使用到网络调试及测试,为了练手,使用 Qt 编写一个串口调试助手.本文按开发的过程进行简单介绍,同时也涉及部分用到的模块代码.详细代码参考源码仓库. 在代码复用方面,笔者认为 Qt 比 M ...

  5. TCP网络调试助手上提示错误:“1035 未知错误”的有效解决方法,本人实测确实可行

    对于网络调试助手如NetAssist等连接不上服务器且左下角显示"1035 未知错误"的问题,本人困惑许久,参考了网上的多种解决方法,有的说法是网络调试助手的版本太低,在Win10 ...

  6. android 蓝牙ble调试助手,Android蓝牙调试助手源码分享

    package com.example.android.BluetoothChat; /** * 描述:蓝牙服务核心类 */ import java.io.IOException; import ja ...

  7. Android TCP客户端

    文章目录 一.创建工程 二.添加网络权限 三.添加布局代码 四.添加逻辑代码 五.通信测试 六.源码分享 一.创建工程 二.添加网络权限 <uses-permission android:nam ...

  8. (转)PC机使用网络调试助手获取onenet的数据(https://blog.csdn.net/qq_29219435/article/details/78480872)

    在上一篇博客中,我写了如何向onenet发送数据,本文主要介绍通过http协议GET到之前上传的数据. 1 2 http://blog.csdn.net/qq_29219435/article/det ...

  9. QT开发网络调试助手项目总结

    之前整理了一些使用QT开发串口调试助手的项目. 博客地址:上位机总结 这次继续整理一些使用QT开发网络调试助手的项目. Qt开源作品41-网络调试助手增强版V2022 我的QT学习之路,编写UDP+t ...

  10. 一些网络调试助手和一些串口调试助手下载

    网络调试助手(NetAssist) 串口调试助手(UartAssist) TCP&UDP调试助手 XCOM V2.6 下载地址 链接:https://pan.baidu.com/s/1cNx1 ...

最新文章

  1. 经历能让人变得更理智更成熟
  2. xshell使用命令总结
  3. python【蓝桥杯vip练习题库】BASIC-3字母图形
  4. boost源码剖析之:泛型编程精灵type_traits(rev#2)
  5. android 开源计算器,开源Windows 10计算器应用迎来Web/Android/iOS移植版
  6. 结构光三维重建Projector-Camera Calibration投影仪相机标定
  7. oracle执行runstats,oracle runstats工具
  8. Node.js server使用
  9. 一层循环时间复杂度_算法的时间与空间复杂度(一看就懂)
  10. 把字符串变为变量_python学习第10课--列表和字符串的可变性
  11. AttributeError: ‘Request‘ object has no attribute ‘is_xhr‘ 报错
  12. Python学习之路day02——007字典的嵌套
  13. 计算机竞赛制作机器人,2016全国中小学电脑制作比赛机器人灭火竞赛规则
  14. python批量处理照片为可打印的黑底白字图片
  15. Echarts实现以秒为单位的动态三条折线图显示
  16. overshoot是什么matlab,Overshoot metrics of bilevel waveform transitions
  17. dpdk example——l3fwd
  18. STM32笔记(十二)---SPI读写FLASH
  19. 使用浏览器传感器工具测试手机陀螺仪效果
  20. linux apk 拆分 odex,android apk反编译和odex转dex-Go语言中文社区

热门文章

  1. 计算机和信息系统安全保密管理规定,图文信息中心 计算机信息系统安全保密管理规定...
  2. Picasa2图片查找浏览工具
  3. 最佳Bilibili下载工具及下载Bilibili视频方法
  4. Word 2019怎样自定义模板,并将自定义模板设为默认模板
  5. opencv 的norm_OpenCV:norm-范数求解函数
  6. python numpy.linalg.norm函数的用法
  7. 自动化机器人 rpa_机器人来了—自动化可能拯救地球
  8. 单片机拟真电路图软件_电路仿真软件有哪些?6款常用的电路仿真软件推荐
  9. php批量百万微信模板消息,PHP实现快速推送微信模板消息
  10. 命令登陆mysql数据库_命令操作Mysql数据库