package com.hisign.android2pc;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.util.Log;
import android.widget.Toast;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
/**
* @author lixm
*
* 这里没有处理多客户端连接,可以开子线程,处理每一个socket
*/
public class MainActivity extends AppCompatActivity {
ServerThread serverThread;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
serverThread = new ServerThread();
serverThread.start();
}
@Override
protected void onDestroy() {
super.onDestroy();
serverThread.setIsLoop(false);
}
/**
* socket线程
*/
class ServerThread extends Thread {
private static final String TAG = "lixm";
DataInputStream inputStream = null;
DataOutputStream outputStream = null;
boolean isLoop = true;
private Socket socket = null;
private boolean isStartSend = false;
public void setIsLoop(boolean isLoop) {
this.isLoop = isLoop;
}
@Override
public void run() {
ServerSocket serverSocket = null;
try {
serverSocket = new ServerSocket(8888);
socket = serverSocket.accept(); // 这里开始阻塞,如果有人连上,则开始发送信息
inputStream = new DataInputStream(socket.getInputStream());
outputStream = new DataOutputStream(socket.getOutputStream());
receiveData();
} catch (Exception e) {
e.printStackTrace();
Log.d(TAG, "Exception ",e);
} finally {
if (serverSocket != null) {
try {
serverSocket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
/**
* 接收PC端过来的数据
*/
private void receiveData(){
new Thread(){ // 接收数据的线程
public void run(){
byte[] buffer = new byte[1024];
while (isLoop){
if(inputStream != null){
try {
Log.d("lixm","here will blocking");
int len = inputStream.read(buffer);
String receiveData = new String(buffer,0,len,"UTF-8");
Log.d("lixm","Server,receiveData = " + receiveData);
if(!TextUtils.isEmpty(receiveData) && receiveData.toLowerCase().equals("start")){
isStartSend = true;
sendData2Pc();
}else if(!TextUtils.isEmpty(receiveData) && receiveData.toLowerCase().equals("stop")){
isStartSend = false;
isLoop = false;
socket.close();
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this,"服务端关闭",Toast.LENGTH_SHORT).show();
}
});
}
} catch (IOException e) {
Log.d("lixm","IOException : ",e);
}
}
}
}
}.start();
}
private void sendData2Pc(){ // 发送数据的线程
new Thread(){
public void run(){
int times = 1;
while(isStartSend){
String echo = " send data: " + times + ", 这里是android端发出的信息。";
try {
outputStream.write(echo.getBytes("UTF-8"));
outputStream.flush();
Log.d(TAG, echo);
times ++;
Thread.sleep(1000);
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}.start();
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
Drive_F.zip
共43个文件
png:10个
xml:9个
java:7个
需积分: 50 39 下载量 155 浏览量
2019-07-13
09:42:55
上传
评论
收藏 141KB ZIP 举报
温馨提示
android 设备通过usb线和电脑连接,可以实现互相通信。
资源推荐
资源详情
资源评论
收起资源包目录
Drive_F.zip (43个子文件)
Android2Pc
.gitignore 216B
gradle
wrapper
gradle-wrapper.jar 53KB
gradle-wrapper.properties 238B
local.properties 448B
build.gradle 585B
gradlew.bat 2KB
gradlew 5KB
app
.gitignore 8B
build.gradle 963B
proguard-rules.pro 772B
app.iml 16KB
libs
src
main
AndroidManifest.xml 964B
java
com
hisign
android2pc
MainActivity.java 5KB
res
values
styles.xml 394B
colors.xml 214B
strings.xml 76B
mipmap-xxhdpi
ic_launcher_round.png 10KB
ic_launcher.png 6KB
layout
activity_main.xml 785B
drawable-v24
ic_launcher_foreground.xml 2KB
mipmap-anydpi-v26
ic_launcher.xml 276B
ic_launcher_round.xml 276B
mipmap-xhdpi
ic_launcher_round.png 7KB
ic_launcher.png 4KB
mipmap-hdpi
ic_launcher_round.png 5KB
ic_launcher.png 3KB
drawable
ic_launcher_background.xml 6KB
mipmap-mdpi
ic_launcher_round.png 3KB
ic_launcher.png 2KB
mipmap-xxxhdpi
ic_launcher_round.png 15KB
ic_launcher.png 9KB
Android2Pc.iml 882B
gradle.properties 743B
settings.gradle 16B
java_gui
.project 384B
.settings
org.eclipse.jdt.core.prefs 592B
src
com
hisign
java_gui
SendMsgThread.java 2KB
IDataCallbackListener.java 270B
UI.java 3KB
ReceiveMsgThread.java 2KB
DeviceManager.java 4KB
Login.java 3KB
.classpath 395B
共 43 条
- 1
资源评论
偶是老李头
- 粉丝: 10
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功