安卓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应用的开发,经历 ...
随机推荐
- cursor
BeginWaitCursor(); // display the hourglass cursor // do some lengthy processing Sleep(3000); EndWai ...
- PHP生成静态页
代码如下: <? function makedir($mudir) //创建目录 { $file = "./$mudir"; @mkdir($file,07 ...
- wpf 自定义窗口,最大化时不覆盖任务栏
相信很多人使用wpf时会选择自定义美观的窗口,因此会设置WindowStyle="None" 取消自带的标题栏.但这样使用 WindowState="Maximized& ...
- asp.net Gridview 的用法
留个档. <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="Fa ...
- redis与memcached比较
引用自:http://blog.csdn.net/e_wsq/article/details/23551799 最近需要用no-sql数据库来保存大量的数据,插入和查询都比较频繁,相对而言查询更加频繁 ...
- Springmvc4 com/fasterxml/jackson/core/JsonProcessingException
非常感谢: 谭卓博客 springmvc4 json springmvc4 集成hibernate4 出现 NoClassDefFoundError:com/fasterxml/jackson/cor ...
- redis在windows中的安装
之前介绍过了redis的相关知识,以及在linux平台上安装redis,为了方便学习,这里记录一下redis在windows平台上的安装步骤 1.下载redis下载地址https://github.c ...
- Android开发涉及有点概念&相关知识点(待写)
前言,承接之前的 IOS开发涉及有点概念&相关知识点,这次归纳的是Android开发相关,好废话不说了.. 先声明下,Android开发涉及概念比IOS杂很多,可能有很多都题不到的.. 首先由 ...
- CXF 入门:创建一个基于WS-Security标准的安全验证(CXF回调函数使用,)
http://jyao.iteye.com/blog/1346547 注意:以下客户端调用代码中获取服务端ws实例,都是通过CXF 入门: 远程接口调用方式实现 直入正题! 以下是服务端配置 ==== ...
- React Developer Tools 安装小提示
1,在google市场里边,安装React Developer Tools之后,发现是开启的,但是按下F12后,并没有发现react选项 2,后来通过查资料,发现必须是运行react项目的时候,才出现 ...