https://www.cnblogs.com/yangfengwu/p/11192618.html

有些很细致的东西参考这篇   https://www.cnblogs.com/yangfengwu/p/5212570.html  看看就可以

咱用Android Studio做

包名  路径什么的自己随意哈

放一个textview 自己拖动,哈

由于没有Edittext 控件,所以,没有可以拖进来的.....

选择自适应

如果没有提示 可以   CTRL + ALT +空格

忘了一件事情,设置下控件的ID  实际上系统会自动设置,但是最好还是自己设置,避免以后文件多了ID冲突

我一般命名规则是 这个控件的名称+该控件所在xml文件的文件名然后后面是1,2,3,4..................有多少个相同的控件就这样排

public class MainActivity extends AppCompatActivity {

    EditText editTextActivityMain1,editTextActivityMain2;//定义两个EditText变量,变量名字我一般设置的和先前页面里面的一样
Button buttonActivityMain1;//连接按钮
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); //获取控件
editTextActivityMain1 = findViewById(R.id.editTextActivityMain1);
editTextActivityMain2 = findViewById(R.id.editTextActivityMain2);
buttonActivityMain1 = findViewById(R.id.buttonActivityMain1);
}
}

连接网络通信需要加权限,我一般都会一次性把自己所有可能用到的都加进去

    <uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-permission android:name="android.permission.VIBRATE" />
<!--读手机内容的权限 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>

其实只需要,,我是为了以后做软件省时省事

由于连接的时候是阻塞的(连接不上就一直等着,直到连接错误,或者超时),所以需要任务

还是用的

https://www.cnblogs.com/yangfengwu/p/11130428.html  这节的程序

                               

接着完善

由于不能在任务里面操作控件,所以咱需要用  Handler

和当时  https://www.cnblogs.com/yangfengwu/p/11087618.html

一样的道理,只不过解决的方法不一样

public class MainActivity extends AppCompatActivity {

    EditText editTextActivityMain1,editTextActivityMain2;//定义两个EditText变量,变量名字我一般设置的和先前页面里面的一样
Button buttonActivityMain1;//连接按钮 Socket socket;//定义一个Socket MyHandler myHandler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); myHandler = new MyHandler(); //获取控件
editTextActivityMain1 = findViewById(R.id.editTextActivityMain1);
editTextActivityMain2 = findViewById(R.id.editTextActivityMain2);
buttonActivityMain1 = findViewById(R.id.buttonActivityMain1); //连接按钮点击事件
buttonActivityMain1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (buttonActivityMain1.getText().toString() == "连接"){
new Thread(new Runnable() {
@Override
public void run() {
//这里面写具体的程序
try {
socket = new Socket("192.168.4.1",);//连接TCP服务器
if (socket.isConnected()){//如果连接上TCP服务器
Log.e("MainActivity", "isConnected");
Message msg = myHandler.obtainMessage();//从消息队列拉取个消息变量
msg.what = ;//设置消息变量的 what 变量值 为1
myHandler.sendMessage(msg);//插入消息队列
}
}
catch (Exception e){
Log.e("MainActivity", e.toString());
}
}
}).start();
}
else {
try{ socket.close(); }catch (Exception e){} //关闭连接
buttonActivityMain1.setText("连接");//按钮显示连接
}
}
});
} //Handler
class MyHandler extends Handler {
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what == ){//接收到消息变量的 what 变量值 为1
buttonActivityMain1.setText("断开");//按钮显示断开
}
}
}
}

测试

     

现在用上上面的IP和端口号

socket = new Socket(editTextActivityMain1.getText().toString(),Integer.valueOf(editTextActivityMain2.getText().toString()))

    

public class MainActivity extends AppCompatActivity {

    EditText editTextActivityMain1,editTextActivityMain2;//定义两个EditText变量,变量名字我一般设置的和先前页面里面的一样
Button buttonActivityMain1;//连接按钮 Socket socket;//定义一个Socket MyHandler myHandler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); myHandler = new MyHandler(); //获取控件
editTextActivityMain1 = findViewById(R.id.editTextActivityMain1);
editTextActivityMain2 = findViewById(R.id.editTextActivityMain2);
buttonActivityMain1 = findViewById(R.id.buttonActivityMain1);
buttonActivityMain1.setText("连接");//加上这个,否则按钮需要点击两次才会判断按钮的Text是"连接" //连接按钮点击事件
buttonActivityMain1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (buttonActivityMain1.getText().toString() == "连接"){
new Thread(new Runnable() {
@Override
public void run() {
//这里面写具体的程序
try {
socket = new Socket(editTextActivityMain1.getText().toString(),Integer.valueOf(editTextActivityMain2.getText().toString()));//连接TCP服务器
if (socket.isConnected()){//如果连接上TCP服务器
Log.e("MainActivity", "isConnected");
Message msg = myHandler.obtainMessage();//从消息队列拉取个消息变量
msg.what = ;//设置消息变量的 what 变量值 为1
myHandler.sendMessage(msg);//插入消息队列
}
}
catch (Exception e){ Log.e("MainActivity", e.toString());
}
}
}).start();
}
else {
try{ socket.close(); }catch (Exception e){} //关闭连接
buttonActivityMain1.setText("连接");//按钮显示连接
}
}
});
} //Handler
class MyHandler extends Handler {
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what == ){//接收到消息变量的 what 变量值 为1
buttonActivityMain1.setText("断开");//按钮显示断开
}
}
}
}

https://www.cnblogs.com/yangfengwu/p/11204436.html

22-ESP8266 SDK开发基础入门篇--编写Android TCP客户端 , 连接和断开的更多相关文章

  1. 23-ESP8266 SDK开发基础入门篇--编写Android TCP客户端 , 加入消息处理

    https://www.cnblogs.com/yangfengwu/p/11203546.html 先做接收消息 然后接着 public class MainActivity extends App ...

  2. 27-ESP8266 SDK开发基础入门篇--编写Android SmartConfig一键配网程序

    style="font-size: 18pt;">https://www.cnblogs.com/yangfengwu/p/11429007.html https://wik ...

  3. 28-ESP8266 SDK开发基础入门篇--编写wifi模块TCP 客户端程序(官方API版,非RTOS版)

    https://www.cnblogs.com/yangfengwu/p/11432795.html 注:这节实现的功能是WIFI模块作为TCP 客户端,连接咱的TCP服务器,然后实现透传 本来想着做 ...

  4. 29-ESP8266 SDK开发基础入门篇--编写TCP 客户端程序(Lwip RAW模式,非RTOS版,精简入门)

    https://www.cnblogs.com/yangfengwu/p/11456667.html 由于上一节的源码长时间以后会自动断开,所以再做这一版非RTOS版的,咱直接用lua源码里面别人写的 ...

  5. 26-ESP8266 SDK开发基础入门篇--编写WIFI模块 SmartConfig/Airkiss 一键配网

    https://www.cnblogs.com/yangfengwu/p/11427504.html SmartConfig/Airkiss 配网需要APP/微信公众号,这节大家先使用我做好的APP/ ...

  6. 8-ESP8266 SDK开发基础入门篇--编写串口上位机软件

    https://www.cnblogs.com/yangfengwu/p/11087558.html 咱用这个编写 ,版本都无所谓哈,只要自己有就可以,不同版本怎么打开 https://www.cnb ...

  7. 9-ESP8266 SDK开发基础入门篇--编写串口上位机软件

    https://www.cnblogs.com/yangfengwu/p/11087613.html 页面修改成这样子             现在看串口发送数据 点击点亮 发送0xaa 0x55 0 ...

  8. 19-ESP8266 SDK开发基础入门篇--C# TCP客户端编写 , 连接和断开

    https://www.cnblogs.com/yangfengwu/p/11130428.html 渐渐的看过去,,,好多节了... 这节做一个C# TCP客户端 新建项目啥子的就不详细截图写了,自 ...

  9. 1-ESP8266 SDK开发基础入门篇--开发环境搭建

    因为今天终于做好了自己的另一块工控板,所以我就开始写基础公开篇的内容,希望自己小小的努力能够帮到大家 自己做的另一块板子 https://www.cnblogs.com/yangfengwu/cate ...

随机推荐

  1. git学习笔记 ---添加远程库

    现在的情景是,你已经在本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作,真是一举 ...

  2. C# 截取字符串方法总结

    第一种:根据单个分隔字符用split截取 string st="GT123_1"; string[] sArray=st.split("_"); //即可得到s ...

  3. 使用KONG网关实现接口迁移的灰度验证

    在我们对一个API站点进行微服务化的过程中,使用KONG网关可以实现以下几个效果: 1. 业务线无感知,其实内部已经被Kong转到其他站点上执行了,这对业务线特别友好. 2. 可以实现租户级/接口级灰 ...

  4. 2019 斗鱼java面试笔试题 (含面试题解析)

      本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.斗鱼等公司offer,岗位是Java后端开发,因为发展原因最终选择去了斗鱼,入职一年时间了,之前面试了很多家公 ...

  5. 图解HTTP(三)

    第七章 确保Web安全的HTTPS 1.HTTP的不足 通信使用明文(不加密),内容可能被监听 不验证通信方的身份,因此可能遭遇伪装 无法验证报文的完整性,所以有可能已遭篡改 2.通信加密 通信的加密 ...

  6. 支付宝支付 微信支付SDK接口不统一? 盘他!

      开发过支付宝.微信支付的同学都知道,微信的支付 API 设计感觉是 Java 开发工程师写的,远不如支付宝 SDK 的接口设计用起来顺手.在这里,统一封装微信支付和支付宝支付的API,使两种支付方 ...

  7. 【故障处理】ORA-19809错误处理

    [故障处理]ORA-19809错误处理 一.1  BLOG文档结构图       一.2  前言部分 一.2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它 ...

  8. VS调试 DataTable (转载)

    调试的时候遇到一个问题:不知道怎么在自动窗口或者添加监视那里查看DataSet或者DataTable的具体的值.度娘了一下很多都是添加DataTable.Rows[][]监视,但是一行一列地看还是有点 ...

  9. C# 认识 接口

    一.什么是接口 C#接口中包含方法.属性.索引器和事件的声明,但常用的接口中一般就是方法和属性,然而接口中并没有方法的具体实现代码(不能提供任何成员实现),只有方法的返回类型和方法名.一个类实现了某个 ...

  10. php操作mysql,1分钟内插入百万数据

    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/qq_33862644/article/d ...