安卓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应用的开发,经历 ...
随机推荐
- .NET高级工程师面试题之SQL篇
1 题目 这确实是一个真实的面试题,琢磨一下吧!知识不用,就会丢掉,我太依赖各种框架和dll了,已经忘记了最基本的东西.有多久没有写过SQL了,我已经不记得了. 已知表信息如下: Department ...
- centos7.2下编译安装git
centos最新的7.2版本,git居然是1.8,而最新的git版本是2.9 差的太多了,何况git2.0后有大更新.于是,我决定编译安装.中间有一点小破折,记录一下,备忘. 1,下载最新的源码,网址 ...
- linux下(Ubuntu、centos)添加永久静态路由的方法
项目中经常遇到多网卡的服务器,但是一个服务器的默认网关只有一个,当需要在多个网络中访问的时候(特别是在公安.交警等政府项目中),就需要添加静态路由了. 添加静态路由的方法有很多种,下面介绍2种比较常见 ...
- [2015hdu多校联赛补题]hdu5297 Y sequence
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5297 题意:给你一个所有正整数的序列,然后去掉满足x^(2~r)的所有数(x为所有正整数,r>= ...
- UILabel的常用属性
UILabel常用属性1——实例化和设置文字 // 实例化UILabel并指定其边框 UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake ...
- 亿级Web系统的高容错性实践
亿级Web系统的高容错性实践 背景介绍 大概三年前,我在腾讯负责的活动运营系统,因为业务流量规模的数倍增长,系统出现了各种各样的异常,当时,作为开发的我,7*24小时地没日没夜处理告警,周末和凌晨也经 ...
- 团队项目作业:利用NABCD模型进行竞争性需求分析
NABC正是这样的一套框架,当你试图提出一项崭新的提案之际,它能够提供四个思维基点,令你的商业策划具备天马行空的基础. 具体来说,NABC是四个关键词的首字母缩写- Need(需求)-现在市场上未被满 ...
- VS2015 建立C++ dll库文件
最近在写一个图片处理,正好用到C++封装DLL给C#调用,一下是总结: 建立一个C++的Win32DLL,这里要注意选择"Export symbols"导出符号.点击完成. 如 ...
- 《Java程序设计》课程准备之问卷调查
一.你对自己的未来有什么规划?做了哪些准备? 答:未来就是找个好工作,在保证自己与父母生活条件良好的基础上,进一步的提高精神上的需求.如:旅游度假,支持更多业余爱好等.准备就是:好好学习,好好运动,好 ...
- 【树上莫队】【带修莫队】【权值分块】bzoj4129 Haruna’s Breakfast
#include<cstdio> #include<cstring> #include<algorithm> #include<cmath> using ...