Android连接服务器端的Socket
package com.example.esp8266;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.Socket;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity {
private EditText edSend, edReceive;
private Button btnConnect, btnSend;
private Handler myHandler;
private SendThread SendThread;
private boolean isReceive = false;
private boolean isConnect = false;
private static final String HOST = "192.168.4.1";
private static final int PORT = 333;
String strMessage;
Socket socket = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
edSend = (EditText) findViewById(R.id.edSend);
edReceive = (EditText) findViewById(R.id.edReceive);
btnConnect = (Button) findViewById(R.id.btConnect);
btnSend = (Button) findViewById(R.id.btSend);
// 连接
btnConnect.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
if (!isConnect) {
new Thread(connectThread).start();
isConnect = true;
}
}
});
// 发送
btnSend.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// 启动发送线程
new Thread(SendThread).start();
}
});
myHandler = new Handler() {// UI主线程消息处理函数
public void handleMessage(Message msg) {
Bundle bundle = msg.getData();
String string = bundle.toString();
edReceive.setText(string);
}
};
}
// 连接到服务器的接口
Runnable connectThread = new Runnable() {
public void run() {
// TODO Auto-generated method stub
try {
socket = new Socket(HOST, PORT);
if (socket != null)
Toast.makeText(getApplicationContext(), "连接成功",
Toast.LENGTH_LONG).show();
else
Toast.makeText(getApplicationContext(), "连接失败",
Toast.LENGTH_LONG).show();
// 初始化发送线程
SendThread = new SendThread(socket);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
// 接收消息的接口
Runnable Receive = new Runnable() {
InputStream inStream;
private byte[] buffer;
private String str = null;
public void run() {
// TODO Auto-generated method stub
while (!isReceive) {
buffer = new byte[512];
try {
inStream = socket.getInputStream();
inStream.read(buffer);
} catch (IOException e) {
e.printStackTrace();
}
str = new String(buffer);
Bundle bundle = new Bundle();
bundle.get(str);
Message message = new Message();
message.setData(bundle);
myHandler.sendMessage(message);
}
}
};
// 发送线程
private class SendThread extends Thread {
private OutputStream outStream = null;
private String str = null;
SendThread(Socket socket) {
try {
outStream = socket.getOutputStream();
} catch (IOException e) {
e.printStackTrace();
}
}
public void run() {
// while(true){
str = edSend.getText().toString().trim();
PrintStream pt = new PrintStream(outStream);
pt.print(str);
new Thread(Receive).start();
// }
}
}
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
if (Receive != null) {
isReceive = false;
((Thread) Receive).interrupt();
}
}
}
Android连接服务器端的Socket的更多相关文章
- Android连接热点的Socket文件传输
最近把测试丢过来的种种BUG解决后,终于有时间去研究研究Socket通信,再加上以前做的WiFi连接和热点开启,于是有了现在的这篇博文:创建热点发送文件,让另一台手机连接热点接收文件. 效果图: 两台 ...
- Android连接socket服务器上传下载多个文件
android连接socket服务器上传下载多个文件1.socket服务端SocketServer.java public class SocketServer { ;// 端口号,必须与客户端一致 ...
- Android学习六:Socket 使用
1socket的作用 通过http去获取服务器的数据在有些情况下是行不通的,所有使用socket与服务器通信也是必须掌握的 2.代码 好了上代码,代码中有解释,首先是简单的服务端代码 package ...
- android开发系列之socket编程
上周在项目遇到一个接口需求就是通讯系列必须是socket,所以在这篇博客里面我想谈谈自己在socket编程的时候遇到的一些问题. 其实在android里面实现一个socket通讯是非常简单的,我们只需 ...
- 基于libevent, libuv和android Looper不断演进socket编程 - 走向架构师之路 - 博客频道 - CSDN.NET
基于libevent, libuv和android Looper不断演进socket编程 - 走向架构师之路 - 博客频道 - CSDN.NET 基于libevent, libuv和android L ...
- 轮询、长轮询、长连接、flash socket 的区别
轮询:客户端定时向服务器发送Ajax请求,服务器接到请求后马上返回响应信息并关闭连接. 优点:后端程序编写比较容易. 缺点:请求中有大半是无用,浪费带宽和服务器资源. 实例:适于小型应用. 长轮询:客 ...
- android连接打印机
android连接 网络打印,主要使用socket连接设备,发送指令给设备. 首先要有设备的IP,端口号一般默认的是9100 //打印设备网络IP etIp.setText("192.16 ...
- tcp连接是基于socket通信的吗
https://zhidao.baidu.com/question/1305788160020716299.html ------ 网络七层协议 五层模型 TCP连接 HTTP连接 socket套接字 ...
- android 连接蓝牙打印机 BluetoothAdapter
android 连接蓝牙打印机 BluetoothAdapter 源码下载地址:https://github.com/yylxy/BluetoothText.git public class Prin ...
随机推荐
- python----数据驱动ddt的使用
一.安装ddtpip install ddt 二.数据驱动和代码驱动数据驱动:根据你提供的数据来进行测试,比如接口自动化测试框架ATP代码驱动:必须得写代码才能测试,比如unittest 三.使用数据 ...
- VM Linux版本安装
安装方法 https://www.jb51.net/softs/619194.html 1. 增加执行权限: sudo chmod +x VMware-Workstation-Full-14.1.2- ...
- 微信小程序wx.previewImage实用案例(交流QQ群:604788754)
本案例是可以滑动预览多张图片效果.(本案例在本地配置好之后,请扫描二维码到手机滑动预览.在开发者工具上预览,滑动不是很流畅) 图片必须选择远程图片,本地图片无法实现预览. 或是通过wx.chooseI ...
- Python_Mix*内置函数
数学运算(7个) abs()求数值的绝对值 divmod()返回两个数值的商和余数 max()返回可迭代对象中的元素中的最大值或者所有参数的最大值 min()返回可迭代对象中的元素中的最小值或者所有参 ...
- pyCharm-激活码(2018)
最近使用pycharm的时候,用的是很久以前的激活地址 于是网上到处寻找最新地址,然而 网上之前分享的激活地址已经多半过期, 于是找朋友帮忙,终于找到一个可用的了 1.选择 Activate new ...
- Ubuntu18.04安装常用软件
一.VMwareWorkstation 1.到官网下载VmwareWorkstation,选择Linux版本 2.将下载下来的安装包放到桌面给予x权限,通过命令行进入到桌面的目录sudo ./执行安装 ...
- 编译安装LAMP
编译安装MariaDB 创建MariaDB安装目录.数据库存放目录.建立用户和目录 先创建一个名为mysql且没有登录权限的用户和一个名为mysql的用户组,然后安装mysql所需的依赖库和依赖包,最 ...
- EFCore Owned Entity Types,彩蛋乎?鸡肋乎?之鸡肋篇
鸡肋 鸡肋(Chicken ribs),现代汉语词语,出自<三国志·魏书·武帝纪>裴松之注引<九州春秋>曰:"夫鸡肋,弃之如可惜,食之无所得,以比汉中,知王欲还也.& ...
- Java oop(一些自己的理解,并没有展开很细)
一下内容是自己总结用的,只是按照自己的理解去写.参考的是菜鸟教程.Java 是一个面向对象的语言.OOP就是面向对象编程.封装:在某些类里面,某些属性不想向外暴露,但是我们又想提供一个方法去访问或修改 ...
- 获取百度地图POI数据三(模拟关键词搜索)
上一篇博文中讲到如何获取用于搜索的关键词,并且已经准备好了一百五十万的关键词 这其中有门牌号码,餐馆酒店名称,公司名称,道路名称等.有了这些数据,我们就可以通过代码,模拟我们在百度地图的搜索框中搜 ...