Android Socket通信
1.TCP:
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"
/>
<Button
android:id="@+id/buttonStart"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:text="启动服务器端监听"
/>
</LinearLayout>
服务器:
package idea.org; import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket; import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button; public class Android_Socket extends Activity {
private Button buttonStart=null;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
buttonStart=(Button)findViewById(R.id.buttonStart);
buttonStart.setOnClickListener(new buttonListener());
}
class buttonListener implements OnClickListener
{
/* (non-Javadoc)
* @see android.view.View.OnClickListener#onClick(android.view.View)
*/
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
new Thread()
{ /* (non-Javadoc)
* @see java.lang.Thread#run()
*/
@Override
public void run() {
// TODO Auto-generated method stub
ServerSocket serverSocket=null;
try
{
//创建ServerSocket对象监听6661端口
serverSocket=new ServerSocket(6661);
//接收tcp连接返回socket对象
Socket socket=serverSocket.accept();
//获得输入流
InputStream inputStream=socket.getInputStream();
byte []byteBuffer=new byte[1024];
int temp=0;
//读取接收的数据
while((temp=inputStream.read(byteBuffer))!=-1)
System.out.println(new String(byteBuffer,0,temp));
socket.close();
serverSocket.close(); }
catch(IOException e)
{
e.printStackTrace();
}
} }.start();
}
};
}
客户端:
package idea.org; import java.io.FileInputStream;
import java.io.InputStream;
import java.net.Socket; public class TCPCient {
public static void main(String[] args)
{
try {
//定义Socket对象,连接指定IP和指定端口
Socket socket=new Socket("127.0.0.1",6661);
InputStream inputStream=new FileInputStream("F://test.txt");
//从Socket对象获得输出流
java.io.OutputStream outputStream=socket.getOutputStream();
int temp=0;
byte[]buffer=new byte[1024];
//向输出流中写要发送的数据
while((temp=inputStream.read(buffer))!=-1)
{
outputStream.write(buffer,0,temp);
System.out.println(new String(buffer,0,temp));
}
outputStream.flush();
socket.close();
}
catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
AndroidManifest.xml:(权限)
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="idea.org"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="11" /> <application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".Android_Socket"
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-permission android:name="android.permission.INTERNET"/>
</manifest>
2.UDP:
服务器:
package idea.org; import java.io.IOException;
import java.io.InputStream;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button; public class Android_Socket extends Activity {
private Button buttonStart=null;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
buttonStart=(Button)findViewById(R.id.buttonStart);
buttonStart.setOnClickListener(new buttonListener());
}
class buttonListener implements OnClickListener
{
/* (non-Javadoc)
* @see android.view.View.OnClickListener#onClick(android.view.View)
*/
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
new Thread()
{ /* (non-Javadoc)
* @see java.lang.Thread#run()
*/
@Override
public void run() {
// TODO Auto-generated method stub
try
{
//创建一个DatagramSocket对象并指定监听的端口
DatagramSocket socket=new DatagramSocket(6662);
byte[]data=new byte[1024];
//创建一个空的DatagramPacket对象用来存放接收到的DatagramPacket
DatagramPacket packet=new DatagramPacket(data,data.length);
//使用receive方法接收客户端发送的数据
socket.receive(packet);
String result=new String(packet.getData(),packet.getOffset(),packet.getLength());
System.out.println(result);
}
catch(IOException e)
{
e.printStackTrace();
}
} }.start();
}
};
}
客户端:
package idea.org; import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress; public class UDPClient {
public static void main(String []args)
{
try
{
//创建一个DatagramSocket对象
DatagramSocket socket=new DatagramSocket();
//创建一个表示IP地址的InetAddress对象
InetAddress serverAddress=InetAddress.getByName("192.168.0.5");
String str="Hello,world!Hello,Everyone!";
byte[]data=str.getBytes();
//创建一个用于发送的DatagramPacket对象
DatagramPacket packet=new DatagramPacket(data,data.length,serverAddress,6662);
//发送数据
socket.send(packet);
}
catch(Exception e)
{
e.printStackTrace(); }
} }
Android Socket通信的更多相关文章
- Android Socket通信详解
一.Socket通信简介 Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信.两者的最大差异在于,http连接使用的是“请求—响应方式”,即在请求时建立连接通道,当客 ...
- Android Socket 通信
Android socket 通信 安卓编写Socket客户端,实现连接Socket服务端通信. 创建Socket连接并获取服务端数据 先创建几个全局变量吧 private BufferedWrite ...
- 浅谈android Socket 通信及自建ServerSocket服务端常见问题
摘 要:TCP/IP通信协议是可靠的面向连接的网络协议,它在通信两端各建立一个Socket,从而在两端形成网络虚拟链路,进而应用程序可通过可以通过虚拟链路进行通信.Java对于基于TCP协议的网络通 ...
- Android Socket通信编程
安卓客户端通过socket与服务器端通讯一般可以按照以下几个步骤:(1).通过IP地址和端口实例化Socket,请求连接服务器:socket = new Socket(HOST, PORT); //h ...
- JAVA ANDROID SOCKET通信检测(SERVER)连接是否断开
Pre 解决思路 代码后记: 客户端app上的部分代码 调用: 服务器上: 客户端判断服务器是否还活着代码: PRE 在利用socket写通讯程序的时候,想检测服务器是否还活着. 从网上找了很多资料, ...
- Android Socket编程学习笔记
http://blog.csdn.net/eyu8874521/article/details/8847173 度娘给出的描述:通常也称作"套接字",用于描述IP地址和端口,是一个 ...
- Android Socket编程
花了大概两天的时间,终于把Android的Socket编程给整明白了.抽空和大家分享一下: Socket Programming on Android Socket 编程基础知识: 主要分服务器端编程 ...
- Android之Socket通信、List加载更多、Spinner下拉列表
Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信.两者的最大差异在于,http连接使用的是“请求—响应方式”,即在请求时建立连接通道,当客户端向服务器发送请求后,服务 ...
- Android开发--Socket通信
一.Socket通信简介 Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信.两者的最大差异在于,http连接使用的是"请求-响应方式",即在请求时 ...
随机推荐
- 错误 1 Files 的值“ < < < < < < < .mine”无效。路径中具有非法字符。
错误 1 Files 的值“ < < < < < < < .mine”无效.路径中具有非法字符. 今天使用SVN进行更新的时候,出现了如上问题,想起卓 ...
- CodeForces 593D【树链剖分】
题意: 给你n个点和n-1条边组成的一棵树,按顺序给出数的每一条边. 询问m次,每次给出一个x求x除以从点a到点b所有边的权值和的乘积,还有修改,给出边的编号,修改某条边的权值. 思路: 树链剖分,用 ...
- iOS7 下去掉状态栏(全屏)
具体步骤如下: 1.在项目的-Info.plist文件中,添加Row: Key:View controller-based status bar appearance Value:NO 2.选择项目在 ...
- Android Eclipse 里面依赖工程无法关联源码解决方案
android开发中,debug调试是一种非常实用快速定位问题的办法.eclipse中多工程依赖状态下会偶现无法debug的困扰,debug中的代码执行时会报出如下错误 The JAR of thi ...
- Spark是一种分布式的计算方案
Spark的安装基于HDFS,所以我们要设置hadoop的配置文件,所以spark的存储不是其主要的功能点,而spark作为分布式生态中的角色是一种计算模式(其他 的计算 模式,比如MR,Storm, ...
- C# odbc
一直下一步,注意需要 勾选你要连接的库名 odbc 命名空间 System.Data.Odbc
- Ubuntu Qt arm-linux-androideabi-gcc: Command not found
:-1: error: /opt/Qt/android-ndk-r9c/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86/bin/arm- ...
- The Ninth Hunan Collegiate Programming Contest (2013) Problem A
Problem A Almost Palindrome Given a line of text, find the longest almost-palindrome substring. A st ...
- The Ninth Hunan Collegiate Programming Contest (2013) Problem L
Problem L Last Blood In many programming contests, special prizes are given to teams who solved a pa ...
- DFS与BFS
顾名思义,DFS就是一直在一个方向搜索,当这一方向不可以时退回该点,换下一方向: 而BFS一开始就是向四面八方搜索,把符合条件的点存入队列中,当前一个点都搜索完毕时,再从队列顶中取出点,再向四面八方搜 ...