安卓App和java通信实例
服务器:放在电脑上运行的java文件
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket; public class MyServer implements Runnable{
//服务器连接
public static ServerSocket serverSocket;
//连接
public static Socket socket;
//端口
public static final int PORT = 8888;
public void run() {
DataInputStream dis = null;
DataOutputStream dos = null;
try {
serverSocket = new ServerSocket(PORT);
System.out.println("正在等待客户端连接...");
//这里处于等待状态,如果没有客户端连接,程序不会向下执行
while(true){
socket = serverSocket.accept();
dis = new DataInputStream(socket.getInputStream());
dos = new DataOutputStream(socket.getOutputStream());
//读取数据
String clientStr = dis.readUTF();
//写出数据
dos.writeUTF(clientStr);
System.out.println("----客户端已成功连接!----");
//得到客户端的IP
System.out.println("客户端的IP =" + socket.getInetAddress());
//得到客户端的端口号
System.out.println("客户端的端口号 =" + socket.getPort());
//得到本地端口号
System.out.println("本地服务器端口号=" + socket.getLocalPort());
System.out.println("-----------------------");
System.out.println("客户端:" + clientStr);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {//我们把流的关闭写在finally里,即使读写出现问题,我们也能正常的关闭流!
try {
if (dis != null)
dis.close();
if (dos != null)
dos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static void main(String[] args){
Thread desktopServerThread = new Thread(new MyServer());
desktopServerThread.start();
}
}
App工程文件:
1、AndroidManifest.xml(主xml文件)
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.himi" android:versionCode="1" android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".MainActivity" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity> </application>
<uses-sdk android:minSdkVersion="4" />
<uses-permission android:name="android.permission.INTERNET" />
</manifest>
2、res/values/strings.xml(资源文件)
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">这里输入文字发给服务器</string>
<string name="app_name">SocketConnect</string>
<string name="send">发送</string>
<string name="get">这里显示服务器发来的信息!</string>
</resources>
3、res/layout/main.xml(资源文件)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="@string/hello" />
<EditText android:id="@+id/edit" android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<Button android:id="@+id/Btn_commit" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="@string/send" />
<TextView android:layout_width="fill_parent" android:id="@+id/tv"
android:layout_height="wrap_content" android:text="@string/get" />
</LinearLayout>
4、src/com.himi/MainActivity.java(Activity文件,客户端端主程序)
package com.himi; import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket; import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView; /**
* @author Himi
*/
public class MainActivity extends Activity implements OnClickListener {
private Button btn_ok;
private EditText edit;
private TextView tv;
//Socket用于连接服务器获取输入输出流
private Socket socket;
//服务器server/IP地址
private final String ADDRESS = "10.203.8.167";
//服务器端口
private final int PORT = 8888; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
btn_ok = (Button) findViewById(R.id.Btn_commit);
tv = (TextView) findViewById(R.id.tv);
edit = (EditText) findViewById(R.id.edit);
btn_ok.setOnClickListener(this);
}
public void onClick(View v) {
if (v == btn_ok) {
DataInputStream dis = null;
DataOutputStream dos = null;
try {
//阻塞函数,正常连接后才会向下继续执行
socket = new Socket(ADDRESS, PORT);
//socket = new Socket("localhost", PORT);
dis = new DataInputStream(socket.getInputStream());
dos = new DataOutputStream(socket.getOutputStream());
//向服务器写数据
dos.writeUTF(edit.getText().toString());
String temp = "I say:";
temp += edit.getText().toString();
temp += "\n";
temp += "Server say:";
//读取服务器发来的数据
temp += dis.readUTF();
tv.setText(temp);
} catch (IOException e) {
Log.e("Himi", "Stream error!");
e.printStackTrace();
} finally {
try {
if (dis != null)
dis.close();
if (dos != null)
dos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
安卓App和java通信实例的更多相关文章
- Flex Socket与Java通信实例说明(转)
Flex Socket与Java通信实例说明(转) 这两天一直在flex的Socket ,现在终于懂了很多.由浅到深一步一步深入.慢慢体会实例,虽然实例都是在网上找的,但也经过了我的测试.我比较喜欢注 ...
- Flex通信-Java服务端通信实例
转自:http://blessht.iteye.com/blog/1132934Flex与Java通信的方式有很多种,比较常用的有以下方式: WebService:一种跨语言的在线服务,只要用特定语言 ...
- Flex通信-与Java实现Socket通信实例
Flex通信-与Java实现Socket通信实例 转自:http://blessht.iteye.com/blog/1136888 博客分类: Flex 环境准备 [服务器端] JDK1.6,“ja ...
- Java Socket 通信实例 - 转载
基于Tcp协议的简单Socket通信实例(JAVA) 好久没写博客了,前段时间忙于做项目,耽误了些时间,今天开始继续写起~ 今天来讲下关于Socket通信的简单应用,关于什么是Socket以及一些 ...
- 手机APP开发:学JAVA转安卓APP开发是不是很容易?
成都亿合云商小编为您分享:Android开发是以Java语言为基础的,Android 虽然使用Java 语言作为开发工具,但是在实际开发中发现,还是与Java SDK 有一些不同的地方.Android ...
- Android单片机与蓝牙模块通信实例代码
Android单片机与蓝牙模块通信实例代码 参考路径:http://www.jb51.net/article/83349.htm 啦啦毕业了,毕业前要写毕业设计,需要写一个简单的蓝牙APP进行交互,通 ...
- 安卓app开发-03-项目的基本开发步骤
android项目的基本开发步骤 这里分享一下开发 安卓 app 的流程,当然有些感觉不必要,其实不然,前期工作也是极为重要的额,就像开发的时候如果目标不对的话,到后期后很迷的,所以一定要提前做好规划 ...
- html+css+js+Hbuilder开发一款安卓APP,根本不用学Android开发!
我们知道,要做一款安卓APP,咱们得先学安卓开发语言,例如java,前端后端.那么没有这些开发语言基础,咱们怎么做呢?其实现在有比较好的开发方案就是做webAPP,咱们可以用web前端知识构建安卓客户 ...
- 【转载】安卓APP架构
注:本篇博文转载于 http://my.oschina.net/mengshuai/blog/541314?fromerr=z8tDxWUH 本文介绍了文章作者从事了几年android应用的开发,经历 ...
随机推荐
- Windows下使用性能监视器监控SqlServer的常见指标
这篇文章主要介绍了Windows下使用性能监视器监控SqlServer的常见指标,常见指标包括Buffer Cache Hit Ratio.Pages/sec. Available Bytes.Dis ...
- webstorm下搭建编译less环境
webstorm自带less,不过要编译的话需要nodejs环境. 首先去node的主页下载对应版本的nodejs然后安装,下载地址:http://nodejs.org/ 安装完之后打开命令提示符(w ...
- BES
自主开发一套消息中间件系统. 需求: 1.保证能在大规模分布式环境下发送接收消息. 2.消息发送者(Producer)能够简单.容易的发送Event. 3.所有的Event都能被注册监听该Event的 ...
- [2015hdu多校联赛补题]hdu5302 Connect the Graph
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5302 题意:给你一个无向图,它的边要么是黑色要么是白色,且图上的每个点最多与两个黑边两个白边相连.现在 ...
- AngularJS学习--- 过滤器(filter),格式化要显示的数据 step 9
1.切换目录,启动项目 git checkout step- npm start 2.需求: 格式化要显示的数据. 比如要将true-->yes,false-->no,这样相互替换. 3. ...
- [转] Oracle analyze 命令分析
转自:http://blog.sina.com.cn/s/blog_682841ba0101bncp.html 1.analyze table t1 compute statistics for ta ...
- android studio 代理配置
android studio 代理设置,只支持http代理,不能用ss服务 中间加一层http转换 1远端ss 2client ss 端口 A 3client privoxy服服 代理ss A端口 到 ...
- LeetCode340 Longest Substring with At Most K Distinct Characters
This is a question needs pay for , I have no money to pay ,so just write some test case by myself. I ...
- ng-repeat指令应用
1.ng-repeat 一看就知道跟foreach等指令类似,用于循环重复.一般用于列表和表格中.用法如下: <tr ng-repeat="data in dataList" ...
- redis队列的实现
redis中文官网:http://www.redis.cn/ 关于redis队列的实现方式有两种: 1.生产者消费者模式. 2.发布者订阅者模式. 详解: 1.生产者消费者模式. 普通版本: 比如一个 ...