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连接使用的是"请求-响应方式",即在请求时 ...
随机推荐
- Codeforces 633D
题意: 给定n,和一个长度为n的序列. 让你在这n个数中找长度尽可能长的fib数列. 思路: 这题的数字是在1e9范围内的,所以最长的可能存在的fib数列官方的解释是90左右.有一种情况除外,就是0的 ...
- poj 2253 Frogger dijkstra算法实现
点击打开链接 Frogger Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 21653 Accepted: 7042 D ...
- 视频相关android软件
1. 视频解码工具:ffmpeg, http://www.ffmpeg.org/ 2. java有一个开源程序: yoyoPlayer, 可以到这个代码中去学习相关的音频知识.http://www.b ...
- (转)如果知道dll文件是面向32位系统还是面向64位系统的?
本文为转载文章,原文地址:http://www.cnblogs.com/qguohog/archive/2011/09/13/2174897.html,仅仅是记录供后续使用,如有侵权请通知删除. 在发 ...
- (转)C# SSL-X509使用
X.509 给出的鉴别框架是一种基于公开密钥体制的鉴别业务密钥管理.一个用户有两把密钥:一把是用户的专用密钥(简称为:私钥),另一把是其他用户都可得到和利用的公共密钥(简称为:公钥).该鉴别框架允许用 ...
- HttpClient + ASP.NET Web API, WCF之外的另一个选择
WCF的野心造成了它的庞大复杂,HTTP的单纯造就了它的简单优美.为了实现分布式Web应用,我们不得不将两者凑合在一起 —— WCF服务以HTTP绑定宿主于IIS. 于是有了让人晕头转向的配置.让人郁 ...
- 网站注册(css)
<! DOCTYPE HTML><html><head><meta charset="utf-8"><title>作业2 ...
- DZ!NT论坛 3.6.711删除用户各种错解决方案
DZ!NT论坛 3.6.711删除用户各种错解决方案 首先删除一个用户~ado.net报错 对象名 'dnt_spaceposts' 无效. 对象名 'dnt_spaceconfigs' 无效. ...
- Android Studio 修改 包名 package name
我们的包名中含有Nav,造成声音不能正常出来:需要改包名,但 android studio 改包名原来还是比较麻烦的,不过现在简单多了: 第一步,直接打开 AndroidManifast.xml 文件 ...
- 使用OpenCV/python进行双目测距
在做SLAM时,希望用到深度图来辅助生成场景,所以要构建立体视觉,在这里使用OpenCV的Stereo库和python来进行双目立体视觉的图像处理. 立体标定 应用标定数据 转换成深度图 标定 在开始 ...