项目需要,用到Android作为客户端,电脑作为服务端,进行文件传输。记录一下自己第一次使用tcp建立通信的测试例子。

仅供第一次接触tcp/udp的初学者,参考,注意电脑和手机必须在同一个局域网下,才能建立通信。

1.网络调试工具:

我先启动一个tcpserver,记得注意自己的ip填写正常,端口不冲突,否则打开不了。

2.打开AS,建立一个新测试项目:                                                                                                                                                      编写一个简单的页面                                                                                                                                                                          

Main2Activity.xml 布局代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context="com.example.thankpad.zhongkongf7.Main2Activity"><EditTextandroid:id="@+id/et_text"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="请输入信息" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><Buttonandroid:id="@+id/bt_tcpsend"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="TCP启动" /><Buttonandroid:id="@+id/bt_tcpsend1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="发送" /></LinearLayout><EditTextandroid:id="@+id/et_text1"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="接收服务器返回来的信息" />
</LinearLayout>
Main2Activity.java  代码;
package com.example.thankpad.zhongkongf7;import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.nio.charset.Charset;public class Main2Activity extends AppCompatActivity implements View.OnClickListener {private Button bt_tcpstart, bt_tcpsend1;private EditText et_text, et_text1;private final static String TAG = "Main2Activity-------->";private final static String addreeip = "192.168.2.13";private final static int port = 8080;private String app_text, receData;private Socket socket = null;// 获取输出流与输入流private OutputStream outputStream = null;private InputStream inputStream = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main2);bt_tcpstart = findViewById(R.id.bt_tcpstart);bt_tcpsend1 = findViewById(R.id.bt_tcpsend1);et_text = findViewById(R.id.et_text);et_text1 = findViewById(R.id.et_text1);bt_tcpstart.setOnClickListener(this);bt_tcpsend1.setOnClickListener(this);}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.bt_tcpstart:String btContent = bt_tcpstart.getText().toString();if (btContent.equals("TCP启动")) {bt_tcpstart.setText("TCP停止");bt_tcpstart.setBackgroundColor(getResources().getColor(R.color.colorAccent1));new Thread(new Runnable() {@Overridepublic void run() {try {socket = new Socket(addreeip, port);inputStream = socket.getInputStream();outputStream = socket.getOutputStream();if (socket.isConnected()) {Log.i(TAG, "连接成功!!!");}new Thread(new Runnable() {@Overridepublic void run() {//连接超时//   socket.setSoTimeout(5000);// 获取输入流接收信息while (socket.isConnected() == true) {byte[] buf = new byte[1024];int len = 0;try {len = inputStream.read(buf);} catch (IOException e) {e.printStackTrace();}//注意charset.forName 字符编码,utf-8中文。。。。。receData = new String(buf, 0, len, Charset.forName("ASCII"));Log.i(TAG, receData);runOnUiThread(new Runnable() {@Overridepublic void run() {et_text1.setText(receData);}});}}}).start();//连接超时//   socket.setSoTimeout(5000);// 获取输入流接收信息while (socket.isConnected() == true) {byte[] buf = new byte[1024];int len = inputStream.read(buf);//注意charset.forName 字符编码,utf-8中文。。。。。receData = new String(buf, 0, len, Charset.forName("ASCII"));Log.i(TAG, receData);runOnUiThread(new Runnable() {@Overridepublic void run() {et_text1.setText(receData);}});}} catch (IOException e) {e.printStackTrace();Log.i(TAG, "连接失败!!!" + e.toString());}}}).start();} else {bt_tcpstart.setText("TCP启动");bt_tcpstart.setBackgroundColor(getResources().getColor(R.color.colorAccent2));try {socket.close();} catch (IOException e) {e.printStackTrace();}}break;case R.id.bt_tcpsend1:tcp_start();break;}}private void tcp_start() {new Thread(new Runnable() {@Overridepublic void run() {app_text = et_text.getText().toString().trim();try {if (app_text.equals("")) {Log.i(TAG, "输入不能为空");} else {//注意charset.forName 字符编码,utf-8中文。。。。。if(outputStream !=null){byte[] sendData = app_text.getBytes(Charset.forName("ASCII"));outputStream.write(sendData, 0, sendData.length);outputStream.flush();}}} catch (IOException e) {e.printStackTrace();}}}).start();}@Overrideprotected void onDestroy() {super.onDestroy();try {socket.close();} catch (IOException e) {e.printStackTrace();}}
}
 但我们点击app启动,按钮,app这边会与电脑的server建立连接,会显示一台设备连接状态。

确定连接后,server发送一条消息过去

app收到回复;

我们再从app发送一条消息到server。

tcp server接收

以上代码可以直接粘贴,测试,至于我们在线程里面是不可Toast提示的,我们可以建立个子线程,通过线程发送特定的消息,Hander,handleMessage去显示,还有这里只是展示简单的字符串信息发送,如果是想传输文件,也可以的,上面的tcp建立socke建立连接,以及文件输出输入流还要结合自己需求添加。tcp的通信建立连接,大概的流程是这样,如果想查找适合自己的项目要求,可以直接网上百度,整理一下来完善自己的项目。由于个人技术能力有限,有不足的,请大神指点迷津,谢谢。

想要简单的源码可以到我的github上面去下载————>https://github.com/yezi10086/ZhongkongF7.git

网络调试助手:链接:https://pan.baidu.com/s/16zwIFlN1hMMQjz6iWGB42g 
提取码:etit

----2020/7/6号,更新github上面的代码,修复之前在电脑模拟器发送不出去的问题。

Android tcp与网络调试助手初入了解相关推荐

  1. 用TCP/UDP 网络调试助手(PC版)无法获取网页信息

    以前的网页均是http开头的,是没有加密的,以前用GET就能获取网页的信息,但是现在的基本是https开头的,是加密的,所以现在用以前的方法,只能返回301错误 现在想要用网络调试助手(PC版)来获取 ...

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

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

  3. 网络调试助手的使用 调试TCP,UDP

    网络调试助手是集TCP/UDP服务端客户端一体的网络调试工具,可以帮助网络应用设计.开发.测试人员检查所开发的网络应用软硬件的数据收发状况,提高开发的速度,是TCP/UDP应用开发助手. 集成TCP/ ...

  4. 网络调试助手:安卓APP集成TCP、UDP、经典蓝牙、低功耗蓝牙的调试demo

    1.前言 我终于不需要调试一个硬件设备装一个APP了,在应用商店下载别人的网络调试助手,又有广告,还不如直接写一个比较完整的网络调试助手.目前支持的功能有tcp客户端和服务端,udp,低功耗蓝牙客户端 ...

  5. UE4 TCP通信 (UE客户端与网络调试助手服务端、python服务端通信)

    目录 一.使用UE4建立TCP客户端 二.使用网络调试助手建立服务端 三.基于网络调试助手的服务端与UE客户端通信 四.基于python的TCP服务端与UE客户端通信 一.使用UE4建立TCP客户端 ...

  6. Qt编写网络调试助手(TCP客户端+TCP服务端+UDP服务端)终极版开源

    时隔半年,对网络调试助手工具进行所有代码重写,这次目录结果整齐的一逼,代码整齐的一逼,非常完善了,打死也不再改版了.这次真的打死也不再改版了. 旧版本1:http://www.qtcn.org/bbs ...

  7. android 网络调试工具,安卓网络调试助手

    安卓网络调试助手源码是一款专门为专业人士准备的安卓网络调试软件,安卓网络调试助手apk支持各种进制的转换发生和多种端口协议,让用户操作起来更加方便,安卓网络调试助手源码有着专业的操作流程,帮助用户快速 ...

  8. 用网络调试助手UDP TCP测试

    网络调试助手如下方图,协议类型采用:UDP 本机IP地址,一般打开后默认地址   端口随意 目标主机:要发送给目标的外网IP地址 端口 用网络调试助手TCP调试,协议类型选择:TCP Client  ...

  9. 网络调试助手TCP server不能成功连接

    <第一次写博客,开始打算记录学习路上的问题,以方便巩固和讨论,还请多多包涵> 正文: 在使用网络调试助手时,想一个建立TCP server,一个建立TCP client,两者之间进行通信, ...

最新文章

  1. HttpServletResponse对象(一)
  2. 千言万语汇总的Mybatis-plus常用API全套教程
  3. 【算法入门漫画】:什么是字符串匹配算法?
  4. oracle 登录非系统用户,非Oracle用户使用操作系统验证登陆(/ as sysdba)
  5. 乘法口诀表编程php视频,PHP学习之制作乘法口诀表
  6. h5能调取摄像头吗_高质感的国产中型车,实力能比肩本田雅阁吗?带你看红旗H5...
  7. 我如何构建SiriWaveJS库:看一下数学和代码
  8. android判断是否登陆过_如何判断车辆是否受到过碰撞?_搜狐汽车
  9. 使用了未初始化的局部变量_Java 成员变量和局部变量
  10. mybatis多表查询出来的实体如何映射_mybatis进阶案例之多表查询
  11. 【渝粤教育】国家开放大学2018年秋季 0195-22T机械设计基础 参考试题
  12. java编译命令是什么_Java编译命令整理
  13. Excel技能培训之十四 统计函数count,countif,counta,countblank,large,small,average,max,min
  14. java 机器学习资源整理
  15. 内容安全策略(CSP)详解
  16. (ICCV 19) Deep Closest Point: Learning Representations for Point Cloud Registration
  17. IPv6的思科培训启用SSH在Cisco IPv6路由器
  18. 力扣 26.删除有序数组中的重复项
  19. C# AD FS实现网站单点登录 Active Directory Federation Services-活动目录联合身份认证 AD域单点登录 ADFS单点登录
  20. c语言stm8变量存储类型,STM8使用----STVD(COSMIC)定义变量指定其类型和位定义

热门文章

  1. 腾讯云服务器使用ssh密钥登录--个人常遇到问题均解决
  2. django 导出数据到excel表 导出excel表到目标路径及客户端下载
  3. 高分七号(GF-7)
  4. Python数据分析初探项目 基于Python数据可视化的网易云音乐歌单分析系统 大学编程作业(TUST 天津科技大学 2022年)
  5. 时间函数的用法(ctime)
  6. 无人驾驶汽车发展史大事纪实
  7. Unity-AR 简介
  8. 最大公约数和最小公倍数,你知道有几种求法吗?
  9. sqlDbx连接oracle64位
  10. python 英语翻译_Python 实现中英文翻译