Android的网络与通信(一)

Android平台有三种网络接口可以使用,他们分别是:java.net.*(标准Java接口)、Org.apache接口和Android.net.*(Android网络接口)。下面分别介绍这些接口的功能和作用。
1.标准Java接口
java.net.*提供与联网有关的类,包括流、数据包套接字(socket)、Internet协议、常见Http处理等。比如:创建URL,以及URLConnection/HttpURLConnection对象、设置链接参数、链接到服务器、向服务器写数据、从服务器读取数据等通信。这些在Java网络编程中均有涉及,我们看一个简单的socket编程,实现服务器回发客户端信息。
服务端:

public class Server implements Runnable{

@Override

public void run() {

Socket socket = null;

try {

ServerSocket server = new ServerSocket(18888);

//循环监听客户端链接请求

while(true){

System.out.println("start...");

//接收请求

socket = server.accept();

System.out.println("accept...");

//接收客户端消息

BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

String message = in.readLine();

//发送消息,向客户端

PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);

out.println("Server:" + message);

//关闭流

in.close();

out.close();

}

} catch (IOException e) {

e.printStackTrace();

}finally{

if (null != socket){

try {

socket.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

//启动服务器

public static void main(String[] args){

Thread server = new Thread(new Server());

server.start();

}

}

客户端,MainActivity

public class MainActivity extends Activity {

private EditText editText;

private Button button;

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

editText = (EditText)findViewById(R.id.editText1);

button = (Button)findViewById(R.id.button1);

button.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

Socket socket = null;

String message = editText.getText().toString()+ "\r\n" ;

try {

//创建客户端socket,注意:不能用localhost或127.0.0.1,Android模拟器把自己作为localhost

socket = new Socket("<span style="font-weight: bold;">10.0.2.2</span>",18888);

PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter

(socket.getOutputStream())),true);

//发送数据

out.println(message);

//接收数据

BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

String msg = in.readLine();

if (null != msg){

editText.setText(msg);

System.out.println(msg);

}

else{

editText.setText("data error");

}

out.close();

in.close();

} catch (UnknownHostException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

finally{

try {

if (null != socket){

socket.close();

}

} catch (IOException e) {

e.printStackTrace();

}

}

}

});

}

}

时间: 2024-10-17 21:21:26

Android的网络与通信(一)的相关文章

Android的网络与通信(转)

第一部分 Android网络基础   Android平台浏览器采用了WeBKit引擎,这款名为Chorme Lite的Web浏览器拥有强大扩展特性,每个开发者都以为编写自己的插件,使得浏览器的功能更加完善.   目前Android平台有3种网络接口.  第一种 java.net.*(标准java接口)   此接口提供与联网有关的类,包括流和数据包套接字.Internet协议.常见HTTP处理.如:创建URL以及URLConnection/HttpURLConnection对象.设置连接参数.连接

Android开发之网络请求通信专题(二):基于HttpClient的文件上传下载

上一篇专题Android开发之网络请求通信专题(一):基于HttpURLConnection的请求通信我们讲解了如何使用httpurlconnection来实现基本的文本数据传输.一般在实际开发中我们可以用于传输xml或者json格式的数据.今天我们来讲解另外一种http网络请求的方式:httpclient,并实现文件的上传和下载. 在这里插个题外话,其实这些网络请求有很多第三方jar包可以使用,这些包都封装得很好了.如果只是想使用,我们就直接拿别人得jar包来用就好.博主这里推荐一个叫xuti

Android热门网络框架Volley详解

.Volley简介 volley的英文意思为‘群发’.‘迸发’.Volley是2013年谷歌官方发布的一款Android平台上的网络通信库.Volley非常适合一些数据量不大,但需要频繁通信的网络操作.使用Volley进行网络开发可以使我们的开发效率得到很大的提升,而且性能的稳定性也比较高.但是Volley不适用于文件的上传下载操作. Volley的特点: >1 使网络通信更快,更简单,更健壮: >2 Get/Post网络请求及网络图像的高效率异步请求: >3 可以对网络请求的优先级进行

android中非阻塞socket通信

1.什么是同步与异步,阻塞与非阻塞 首先我们要明白搞明白:同步就等于阻塞?异步就等于非阻塞?这是不对的,同步不等于阻 塞,而异步也不等于非阻塞. 1)那什么是同步编程? 什么是同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回.根据这个定义,android中绝大多数函数都是同步调用.但是一般而言,我们在谈论同步.异步的时候,特指那些需要其他部件协作或者需要一定时间完成的任务.在android中,由于主线程(UI线程的不安全性),我们经常会用到handler的SendMessage

Android 的网络编程

android的网络编程分为2种:基于socket的,和基于http协议的. 基于socket的用法 服务器端: 先启动一个服务器端的socket     ServerSocket svr = new ServerSocket(8989); 开始侦听请求 Socket s = svr.accept(); 取得输入和输出 DataInputStream dis = new DataInputStream(s.getInputStream()); DataOutputStream dos = new

网络--三种网络通讯方式及Android的网络通讯机制

Android平台有三种网络接口可以使用,他们分别是:java.net.*(标准Java接口).Org.apache接口和Android.net.*(Android网络接口).下面分别介绍这些接口的功能和作用. 1.标准Java接口 java.net.*提供与联网有关的类,包括流.数据包套接字(socket).Internet协议.常见Http处理等.比如:创建URL,以及URLConnection/HttpURLConnection对象.设置链接参数.链接到服务器.向服务器写数据.从服务器读取

android 请求网络异步加载

/** * 封装ProecssDialog对话框 * */ public class LoadDialog extends ProgressDialog { private String title = "进度对话框"; private String message = "加载数据中...."; public LoadDialog(Context context, int theme) { super(context, theme); } /** * 用默认的标题和

Android进程间的通信之AIDL

Android服务被设计用来执行很多操作,比如说,可以执行运行时间长的耗时操作,比较耗时的网络操作,甚至是在一个单独进程中的永不会结束的操作.实现这些操作之一是通过Android接口定义语言(AIDL)来完成的.AIDL被设计用来执行进程间通信,另一种实现方式见博文Android进程间的通信之Messenger.本文我们将学习如何创建AIDL文件实现Android进程间通信.在正式学习之前,我们先澄清一些"事实". 关于Android Service 1.Android服务不是后台任务

Android 之 IPC 进程通信全解析

Android 之 IPC 进程通信全解析 本篇博客的框架 什么是IPC IPC(Inter-Process Communication) 进程间通信,是指两个不同进程之间数据交换的过程. 在明确其之前,需要先搞懂几个概念: 线程:CPU可调度的最小单位,是程序执行流的最小单元:线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源. 进程: 一个执行单元,在PC 和移动设备上一