`
Bauble
  • 浏览: 67487 次
  • 性别: Icon_minigender_1
  • 来自: Mercury
社区版块
存档分类
最新评论

Android23_Socket编程

阅读更多

 

一、什么是Socket

       Socket是基于不同的协议的网络通信的接口。Socket的英文原意是“插座”,所谓socket通常也被称作“套接字”,用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过Socket向网络发出请求或者应答网络请求。

 

二、Socket基本通信模型

 


 

三、使用基于TCP协议的Socket

 


  例子程序,此例子需要两个项目,一个是Android项目作为服务器端,一个可以是Java项目作为客户端。运行时需要先在真机上面运行服务端,开启服务,然后在eclipse中运行客户端。


 

SocketActivity.java

package com.android.activity;
import java.io.InputStream;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
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 SocketActivity extends Activity {
	private Button startTCPButton = null;
	private Button startUDPButton = null;
	@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        startTCPButton = (Button)findViewById(R.id.startTCPButton);
        startTCPButton.setOnClickListener(new StartTCPButtonListener());
        startUDPButton = (Button)findViewById(R.id.startUDPButton);
        startUDPButton.setOnClickListener(new StartUDPButtonListener());
    }
	class StartTCPButtonListener implements OnClickListener{
		public void onClick(View v) {
			Thread thread = new Thread(new TCPServerThread());
			thread.start();
		}
	}
	class StartUDPButtonListener implements OnClickListener{
		public void onClick(View v) {
			Thread thread = new Thread(new UDPServerThread());
			thread.start();
		}
	}
	class TCPServerThread implements Runnable{
		//TCP的服务器端
		public void run() {
			//声明一个ServerSocket对象
			ServerSocket serverSocket = null;
			try{
				//创建一个ServerScoket对象,并让其监听点卡9999
				serverSocket = new ServerSocket(9999);
				//accept是一个阻塞的方法,只有有数据过来才执行,
				//没有接收到则不向下执行
				Socket socket = serverSocket.accept();
				//从socket对象中得到InputStream对象
				InputStream inputStream = socket.getInputStream();
				byte buffer[] = new byte[1024*4];
				int temp = 0;
				//从InputStream当中读取客户端所发生的数据
				while((temp = inputStream.read(buffer)) != -1){
					System.out.println(new String(buffer,0,temp));
				}
			}catch(Exception e){
				e.printStackTrace();
			}finally{
				try{
					serverSocket.close();
				}catch(Exception e){
					e.printStackTrace();
				}
			}
		}
	}
	class UDPServerThread implements Runnable{
		//UDP服务器端口
		public void run(){
			try{
				//创建一个DatagramSocket对象,并制定监听的端口
				DatagramSocket socket = new DatagramSocket(9998);
				byte data[] = new byte[1024];
				//使用UDP所发送的数据包,创建一个空的DatagramPacket对象,
				//用来接收从客户端发送过来的数据
				DatagramPacket packet = new DatagramPacket(data,data.length);
				//使用receive方法接收数据
				socket.receive(packet);
				//data长度定位1024,如果传输的数据不足1024就会在后面出现乱码	
				String result = new String(packet.getData(),packet.getOffset(),packet.getLength());
				System.out.println("resutl --> " + result);
			}catch(Exception e){
				e.printStackTrace();
			}
		}
	}
}

 TCPClient.java

package com.android.client;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
public class TCPClient {
	public static void main(String [] args){
		try{
			//创建一个Socket对象,指定服务器端口的IP和端口号
			Socket socket = new Socket("122.158.93.206",9999);
			InputStream inputStream = new FileInputStream("./txt/panghuang.txt");
			OutputStream outputStream = socket.getOutputStream();
			byte buffer[] = new byte[1024*4];
			int temp = 0;
			while((temp = inputStream.read(buffer)) != -1){
				outputStream.write(buffer,0,temp);
			}
		}catch(Exception e){
			e.printStackTrace();
		}
	}
}

 四、使用基于UDP协议的Socket

UDPClient.java

package com.android.client;
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(9998);
			//创建一个InetAddree
			InetAddress serverAddress = InetAddress.getByName("122.158.93.206");
			String s = "Hello Android";
			byte data[] = s.getBytes();
			DatagramPacket packet = new DatagramPacket(data,data.length,serverAddress,9998);
			socket.send(packet);
		}catch(Exception e){
			e.printStackTrace();
		}
	}
}
  • 大小: 84.1 KB
  • 大小: 68 KB
  • 大小: 14.1 KB
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    android_Socket编程

    Android Socket编程是移动应用开发中实现设备间网络通信的关键技术。Socket,又称套接字,是一种网络编程接口,允许应用程序通过网络与其他设备上的应用程序进行数据交换。本篇将深入探讨Socket的基本概念、通信模型...

    android_socket_chat.zip_Android 数据库_android_安卓socket

    在Android平台上开发应用程序时,有时候我们需要实现客户端与服务器之间的实时通信,这通常涉及到网络编程,尤其是Socket编程。在这个“android_socket_chat.zip”压缩包中,包含了一个简单的Android聊天应用的示例...

    Socket-android.zip_Android Socket_android_android socket_andr

    下面我们将深入探讨Android中的Socket编程及其在聊天应用中的应用。 1. **Socket基础** - **定义**:Socket是进程间通信(IPC)的一种形式,特别适用于网络环境,它为两台机器上的进程提供了一种直接通信的途径。 ...

    AndroidSocket.rar_Socket服务器 客户端_android studio_androidsocket_reg

    基于android平台的服务器和客户端,使用android studio 编写,比较基础,适合初学者学习。熟悉简单的C/S,Socket编程。

    sp_java_handsomemmf_socket_android监控_android_

    标题 "sp_java_handsomemmf_socket_android监控_android_" 暗示了这是一个关于使用Java、Socket编程技术在Android平台上实现手机实时视频监控的项目。描述指出,源码包括了客户端代码,这意味着开发者可以了解并学习...

    Android-PC-socket.zip_android_android PC socket_android socket_a

    在Android平台上,与个人计算机(PC)进行通信通常涉及到网络编程,特别是使用Socket技术。"Android-PC-socket.zip"这个压缩包很可能包含了关于如何在Android客户端和PC服务端之间建立Socket连接,进行数据传输的...

    PPTClient.rar_PPTClient_android socket_android socket wifi_socke

    在Android平台上,Socket编程是一种常见的通信机制,它允许设备通过网络进行双向数据交换。在这个“PPTClient.rar”项目中,我们看到一个Android应用(PPTClient)利用Socket技术来远程控制PC端的PowerPoint(PPT)...

    Socket_Android_client_server.rar_android_android socket_android客

    在Android平台上进行网络通信时,Socket通信是一种常见且重要的方式。Socket可以理解为网络上的一个端点,允许设备之间建立连接并交换数据。本压缩包文件"基于Socket通迅—Android客户端和服务器端.rar"提供了关于...

    Android中的Socket编程

    在Android应用开发中,Socket编程是实现设备间通信的重要手段,尤其在构建网络服务、实时数据传输等场景中不可或缺。本教程将引导初学者逐步理解并掌握Android中的Socket编程技术。 首先,Socket在计算机网络中被...

    以聊天为例讲解关于Android_的socket编程

    ### Android中的Socket编程详解 #### 一、引言 在移动互联网时代,应用程序之间的网络通信变得尤为重要。Android作为主流的移动操作系统之一,在进行网络通信时提供了多种方式,其中Socket编程是一种非常基础且...

    Android_Socket_客户端和服务器端,支持多张图片同时传送,自定义协议头

    在Android平台上,Socket通信是应用程序之间进行数据交换的重要方式,特别是在客户端和服务器端的数据交互中。...这对于开发者来说是一个很好的学习和参考案例,有助于深入理解Android网络编程和Socket通信技术。

    android_socket_chat

    在Android平台上进行网络通信时,Socket编程是一种常见且重要的技术。"android_socket_chat"这个项目很可能是关于如何在Android设备上实现一个基于Socket的聊天应用的示例。在这个项目中,开发者可能通过Socket连接...

    android_socket简单例子

    在Android平台上,Socket编程是应用程序之间,或者设备与服务器之间通信的一种重要方式。"android_socket简单例子"这个项目就是展示了如何在Android应用中使用Socket进行客户端和服务端的通信。在这个例子中,我们将...

    讲解关于Android_的socket编程

    Android 平台上的套接字(Socket)编程是移动应用开发中的重要部分,它允许设备通过网络与其他设备或服务器进行双向通信。在本示例中,我们将探讨如何使用 Java 的 Socket API 在 Android 上实现一个简单的聊天应用...

    PC_Socket_Demo

    对于开发者来说,深入理解Socket编程不仅可以提升网络编程技能,还能为构建跨平台的通信应用打下坚实基础。通过分析和实践这些示例,可以学习到如何建立连接、发送和接收数据、处理异常以及关闭连接等关键步骤,从而...

    android socket编程实例

    android socket编程实例

    Android Socket编程实践

    Android Socket编程实践

    Android中的Socket编程(包含服务端代码)

    在Android开发中,Socket编程是实现设备间通信的重要手段,特别是在构建网络应用程序时。本教程将深入探讨如何在Android客户端和Java服务端之间利用Socket进行数据传输。首先,我们需要了解Socket的基本概念。Socket...

    android socket 编程实例

    在Android平台上进行网络通信时,Socket编程是一种常见且重要的技术,它允许设备通过TCP或UDP协议与其他设备或服务器进行双向数据传输。在这个实例中,我们将深入探讨如何在Android客户端和Java服务器端实现Socket...

    AndroidSocket_android_服务器_

    在Android平台上进行网络编程时,Socket通信是一种常见且重要的技术,它允许设备间进行双向通信。本示例主要探讨如何在Android中实现一个简单的Socket服务器,以便与其他Android客户端或者任何支持Socket通信的设备...

Global site tag (gtag.js) - Google Analytics