android之TCP客户端框架
一、程序框架
1.1 创建方法
onCreate
1.1.1 创建连接按键线程,并使能线程(触发原因:可按键、其他操作,并进行状态判断):
Connect_Thread connect_Thread = new Connect_Thread();
connect_Thread.start();
1.1.2 关闭连接按键线程,并复位(触发原因:可按键、其他操作,并进行状态判断):
socket.close();
socket=null;
1.1.3 发送给服务器数据(触发原因:可按键、其他操作):
outputStream = socket.getOutputStream();
outputStream.write(MsgEditText.getText().toString().getBytes());
1.2 连接线程
class Connect_Thread extends Thread
1.2.1 run方法
1.2.1.1 如果socket为null,即没连接过
InetAddress ipAddress = InetAddress.getByName(IPEditText.getText().toString());//这里获取IP是通过EditText,也可以其他赋值给InetAddress
int port =Integer.valueOf(PortText.getText().toString());//这里获取端口号是通过EditText,也可以其他赋值给InetAddress
socket = new Socket(ipAddress, port);//创建连接地址和端口
1.2.1.2 在创建完连接后启动接收线程
Receive_Thread receive_Thread = new Receive_Thread();
receive_Thread.start();
1.3 读取线程
class Receive_Thread extends Thread
1.3.1 run方法
死循环一直读取
final byte[] buffer = new byte[1024];//创建接收缓冲区
inputStream = socket.getInputStream();
final int len = inputStream.read(buffer);//数据读出来,并且返回数据的长度
runOnUiThread(new Runnable() {
@Override
public void run() {
RrceiveEditText.setText(new String(buffer,0,len));
}
});
效果图:
最新文章
- October 30th Week 45th Sunday 2016
- ListView的CheckBox实现全部选中/不选中
- 闲扯json取值,联想map取值。
- The prefix ";context"; for element ";context:component-scan"; is not bound.
- 给Testerhome测试小道消息做个硬广告
- phpcms还原被删除的栏目
- 知识总结: Activity的四种启动模式
- PHP 中变量的间接引用
- hdu 5312 Sequence(数学推导+线性探查(两数相加版))
- [MAC Eclipse] Eclipse for MAC 中文乱码的解决办法
- Python一个命令开启http下载服务器(可以局域网内共享文件)
- 在编写Arcgis Engine 过程中对于接口引用和实现过程过产生的感悟
- CORS:source,princple,implimentation in Spring
- LeetCode(31): 下一个排列
- Android性能优化-减小图片下载大小
- mac 安装gevent报错
- LDAP summary-- Python ldap
- Linux启动vi编辑器时提示E325: ATTENTION解决方案
- es6 let关键字
- 构建SqlSessionFactory 的过程