Android TCP客户端调试助手
前言
之前做了一个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客户端调试助手相关推荐
- Android studio TCP网络调试助手应用开发(支持TCP Server与Client切换)
在前几篇的文章中带大家完成了基于TCP的物联网安卓应用开发,教程内容是创建了一个TCP客户端并连接服务器完成数据通信的过程,后不久又发布了一个ESP8266创建TCP 服务器与安卓的客户端进行通信的一 ...
- QT编写TCP/UDP调试助手之TCP客户端
效果图: TCP/UDP调试助手之TCP客户端,支持错误信息显示,断开连接后及时释放资源. 一.关键代码 1.在.pro文件中添加QT += network,包含头文件#include <QTc ...
- Qt - MQTT客户端调试助手
Qt - MQTT客户端调试助手 Qt5.9.4 MinGW开发,MQTT调试助手,源码和软件下载链接如下: 源码地址:https://gitee.com/jhuangBTT/MQTT-Client ...
- Qt实践录:TCP网络调试助手
由于项目需要使用到网络调试及测试,为了练手,使用 Qt 编写一个串口调试助手.本文按开发的过程进行简单介绍,同时也涉及部分用到的模块代码.详细代码参考源码仓库. 在代码复用方面,笔者认为 Qt 比 M ...
- TCP网络调试助手上提示错误:“1035 未知错误”的有效解决方法,本人实测确实可行
对于网络调试助手如NetAssist等连接不上服务器且左下角显示"1035 未知错误"的问题,本人困惑许久,参考了网上的多种解决方法,有的说法是网络调试助手的版本太低,在Win10 ...
- android 蓝牙ble调试助手,Android蓝牙调试助手源码分享
package com.example.android.BluetoothChat; /** * 描述:蓝牙服务核心类 */ import java.io.IOException; import ja ...
- Android TCP客户端
文章目录 一.创建工程 二.添加网络权限 三.添加布局代码 四.添加逻辑代码 五.通信测试 六.源码分享 一.创建工程 二.添加网络权限 <uses-permission android:nam ...
- (转)PC机使用网络调试助手获取onenet的数据(https://blog.csdn.net/qq_29219435/article/details/78480872)
在上一篇博客中,我写了如何向onenet发送数据,本文主要介绍通过http协议GET到之前上传的数据. 1 2 http://blog.csdn.net/qq_29219435/article/det ...
- QT开发网络调试助手项目总结
之前整理了一些使用QT开发串口调试助手的项目. 博客地址:上位机总结 这次继续整理一些使用QT开发网络调试助手的项目. Qt开源作品41-网络调试助手增强版V2022 我的QT学习之路,编写UDP+t ...
- 一些网络调试助手和一些串口调试助手下载
网络调试助手(NetAssist) 串口调试助手(UartAssist) TCP&UDP调试助手 XCOM V2.6 下载地址 链接:https://pan.baidu.com/s/1cNx1 ...
最新文章
- 经历能让人变得更理智更成熟
- xshell使用命令总结
- python【蓝桥杯vip练习题库】BASIC-3字母图形
- boost源码剖析之:泛型编程精灵type_traits(rev#2)
- android 开源计算器,开源Windows 10计算器应用迎来Web/Android/iOS移植版
- 结构光三维重建Projector-Camera Calibration投影仪相机标定
- oracle执行runstats,oracle runstats工具
- Node.js server使用
- 一层循环时间复杂度_算法的时间与空间复杂度(一看就懂)
- 把字符串变为变量_python学习第10课--列表和字符串的可变性
- AttributeError: ‘Request‘ object has no attribute ‘is_xhr‘ 报错
- Python学习之路day02——007字典的嵌套
- 计算机竞赛制作机器人,2016全国中小学电脑制作比赛机器人灭火竞赛规则
- python批量处理照片为可打印的黑底白字图片
- Echarts实现以秒为单位的动态三条折线图显示
- overshoot是什么matlab,Overshoot metrics of bilevel waveform transitions
- dpdk example——l3fwd
- STM32笔记(十二)---SPI读写FLASH
- 使用浏览器传感器工具测试手机陀螺仪效果
- linux apk 拆分 odex,android apk反编译和odex转dex-Go语言中文社区
热门文章
- 计算机和信息系统安全保密管理规定,图文信息中心 计算机信息系统安全保密管理规定...
- Picasa2图片查找浏览工具
- 最佳Bilibili下载工具及下载Bilibili视频方法
- Word 2019怎样自定义模板,并将自定义模板设为默认模板
- opencv 的norm_OpenCV:norm-范数求解函数
- python numpy.linalg.norm函数的用法
- 自动化机器人 rpa_机器人来了—自动化可能拯救地球
- 单片机拟真电路图软件_电路仿真软件有哪些?6款常用的电路仿真软件推荐
- php批量百万微信模板消息,PHP实现快速推送微信模板消息
- 命令登陆mysql数据库_命令操作Mysql数据库