`
warnerhit
  • 浏览: 123655 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

(转)Android Socket 开发

阅读更多

根据之前的经验,应用软件的网络通信无非就是Socket和HTTP,其中Socket又可以用TCP和UDP,HTTP的话就衍生出很多方式,基础的HTTP GET和POST请求,然后就是WebService的SOAP。

在这些方式中,Socket当然是最基础的。因此先从Socket开始。

服务端就不需要过多的说明了,无论采用什么语言什么平台都可以,只要遵循基本的Socket监听模式就行。

实际上Android的Socket开发就是Java的Socket开发,因此学习过Java的开发人员也许觉得并没有什么难度,不过依然有一些不同于PC开发的地方需要注意

首先是说说TCP开发

JAVA里的TCP开发感觉比C#里简单多了,实现方法几句话就能完成。

01 Socket socket = new Socket("192.168.3.119",7628);//创建Socket实例,并绑定连接远端IP地址和端口
02  
03 OutputStream ops = socket.getOutputStream();//定义一个输出流,来自于Socket输出流
04    
05 byte[] bytes = b.getBytes();
06         
07 ops.write(bytes);//向输出流中写入数据
08  
09 ops.flush();//刷行输出流
10  
11 //至此,在连接成功的情况下,服务端应该就能收到发送过去的流了。
12  
13  
14 //接下来是接收服务器发送过来的数据
15 InputStream ips = socket.getInputStream();//定义输入流,来自于socket的输入流
16  
17 byte[] bytes2 = new byte[20];
18  
19 ips.read(bytes2);//读取输入流数据
20    
21 String str = new String(bytes2);//转换成字符串
22  
23 btn.setText(str);//显示出来(我是现实在button上,当然,这个方法不正规,不过可以让我少放点空间,看上去界面干净点,只要能看到效果就行)
24  
25 socket.close();

 

服务端代码就不多说明了,只要实现了Socket监听和接收,发送就行。这样Android上Tcp的Socket就完成了,很简单。

接下来是UDP的,理论上来说,UDP的实现应该更简单,不过,由于使用模拟器来调试的关系,出了一点小问题,郁闷了很久,另外,Java用UDP Socket对应使用的类是DatagramSocket,与C#不同,c#是在创建Socket的时候制定参数来制定协议类型,先看代码。

01 DatagramSocket dgs = new DatagramSocket();//建立一个Socket,这个Socket将作为一个发送器,将Socket包发送出去
02      
03 InetAddress inet = InetAddress.getByName("192.168.3.119");//创建一个InetAddress,ip地址为要发动到的远端的服务器IP
04      
05 DatagramPacket dgp = new DatagramPacket("test2".getBytes(),"test2".getBytes().length,inet,7628);//创建一个UDP数据包,数据包包含远端的IP地址及端口
06      
07 dgs.send(dgp);//发送   
08     
09 dgs.close();
10      
11      
12 DatagramSocket dgs2 = new DatagramSocket(9997);//创建另一个UDPSocket,
13      
14 DatagramPacket dgp2 = new DatagramPacket(new byte[20],20); //创建一个空报文包
15 dgs2.receive(dgp2);//接收数据并填充到报文包中
16      
17 String str = new String(dgp2.getData());//获取报文包里的数据并转换成字符串
18      
19 btn.setText(str);//显示获得的数据
20      
21 dgs2.close();//关闭Socket

 

需要特别注意的地方,在不做端口映射的情况下,UDP可能无法接受到服务器端发送过来的数据,原因是使用eclipse开发的时候,调试程序是用的模拟环境,模拟环境下,接收数据是要做端口映射的,因为模拟环境下,没有自己真实的IP地址和端口,模拟器是使用5554来运行的,发送数据到PC没问题,但是 PC发送到模拟器的时候,需要把本机的端口映射到模拟器上,真机环境不需要,具体操作方式如下

1、运行模拟器
2、打开DOS命令行窗口
    执行:telnet localhost 5554
   5554是模拟器的端口,执行之后会进入android console
3、 在console下执行:
   redir add udp :8000:9000
   其中,第一个端口号是PC的端口,第二个端口号是模拟器端口。
   执行此命令之后,会把PC 8000端口接收到的数据转到模拟器的9000端口,模拟器就能从9000端口接收UDP数据包了

另外,要实现Socket,必须在 AndroidManifest.xml 中加入权限如下

1 <uses-permission android:name="android.permission.INTERNET" />
分享到:
评论

相关推荐

    Android SOCKET开发的网络摄像头程序

    采用Android SOCKET开发的网络摄像头程序,接收网络传输过来的字节图片信息然后采用sufaceView实时显示

    Android-Lemon一个简单轻量级的AndroidSocket框架

    总结来说,`Android-Lemon`作为一个轻量级的Android Socket框架,大大简化了开发者在Android平台上进行Socket通信的工作,提高了开发效率。其易用性和灵活性使得它成为Android网络编程中值得推荐的工具。通过理解其...

    Android开发基于Socket聊天最终版

    一、Android Socket开发 Socket是网络通信中的基础组件,它允许两个或更多应用程序通过网络进行通信。在Android中,使用Socket可以实现实时的数据传输,比如聊天应用。开发Android Socket应用需要理解以下几个关键...

    Android socket通信聊天,客户端+服务端

    在Android平台上进行网络通信时,Socket通信是一种常见且重要的方式,...理解并熟练掌握Socket通信,对于开发实时交互的应用,如聊天、游戏等,至关重要。通过实践和不断优化,你可以构建出高效、稳定的网络通信系统。

    Android socket sdk开发

    本篇文章将深入探讨如何在Android中开发Socket SDK,以及涉及的一些关键知识点。 首先,我们需要理解Socket的基本概念。Socket是网络编程中的一个接口,它提供了进程间的网络通信能力,允许两台计算机通过TCP/IP...

    Android开发,Socket Client端和Socket Server端数据发送和接收

    在Android开发中,Socket通信是实现设备间网络通信的一种常见方式。Socket分为客户端(Socket Client)和服务器端(Socket Server),它们共同构成了基于TCP/IP协议的通信模型。本篇文章将详细探讨Android环境下如何...

    android socket

    在Android平台上,Socket编程是应用程序之间进行网络通信的重要方式,主要分为TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)两种。本篇文章将重点探讨基于Android的UDP Socket编程,包括其...

    Android socket即时通信

    Android Socket通信是Android应用开发中的一个重要部分,它允许应用程序通过网络与其他设备进行数据传输,实现客户端与服务器之间的实时通信。在这个场景中,"Android socket即时通信"涉及到在Android设备上创建...

    Android Socket 服务端实现

    在Android平台上,Socket服务端的实现是通过Java的Socket编程接口来完成的,因为Android是基于Java的。本文将深入探讨如何在Android设备上构建一个Socket服务器,以便它能够接收客户端的消息,同时支持向特定客户端...

    android socket传文件

    在Android平台上,Socket通信是一种常见的数据传输方式,尤其在设备间需要进行文件传输时。本文将深入探讨如何使用Android Socket实现文件的传输,并特别关注如何自动配置Server端(S端)的IP地址。 首先,理解...

    Android的socket长连接(心跳检测)

    在Android开发中,Socket长连接是一种常见的通信方式,特别是在实时性要求高的应用中,如即时通讯、在线游戏等。为了保持连接的稳定性和检测网络状况,通常会采用心跳检测机制。下面将详细介绍Android中实现Socket长...

    Android socket demo.zip

    在Android平台上,Socket编程是一种常见的通信方式,常用于设备间...通过学习和调试这个demo,你可以掌握如何在Android应用中实现TCP/IP通信,这对于开发需要设备间数据交换的应用(如多人游戏、文件共享等)非常有用。

    Android Socket编程客户端服务器端源码

    在Android开发中,Socket编程是实现设备间通信的重要手段,特别是在构建网络应用时。本教程将深入探讨Android Socket编程的基本概念、客户端与服务器端的实现以及相关源码解析。 一、Socket基本概念 Socket,也被...

    android 2.3以后的socket注意

    在Android系统中,Socket通信是应用层与传输层之间的接口,允许应用程序进行网络通信。从Android 2.3(Gingerbread)版本开始,为了更好地管理和优化...理解并掌握这些知识点对于开发高质量的Android网络应用至关重要。

    Android Socket连接(心跳检测,断线重连,状态监测等)

    Android Socket连接,包含心跳检测,断线重连,数据发送等等 博客地址:http://blog.csdn.net/yuzhiqiang_1993/article/details/78094909

    Android端socket框架EasySocket

    在Android应用开发中,Socket通信是实现设备间数据传输的重要方式,尤其在需要实时性、低延迟的场景中,如游戏、聊天应用等。EasySocket是一个专为Android设计的轻量级Socket框架,它简化了原生Socket编程的复杂性,...

    android socket 编程实例

    在实际开发中,我们通常会封装一个Socket通信类,提供发送和接收数据的方法,以便在应用的其他部分轻松使用。此外,考虑到网络连接可能不稳定,可以使用心跳机制来检测连接状态,及时重连。 对于安全性,如果你的...

    Android基于Socket聊天最终版

    总的来说,这个项目涵盖了Android应用开发中的多个关键知识点,如Socket通信、多线程、数据库操作和UI设计。开发者通过实现这个项目,不仅掌握了网络编程的基本原理,还锻炼了在Android平台上构建实际应用的能力。

    安卓Android源码——Android中Socket大文件断点上传.zip

    在安卓(Android)平台上,开发过程中常常需要处理大文件的传输问题,比如用户...在压缩包中的`AndroidSocket`文件可能包含了详细的源码示例,开发者可以通过学习和理解这些代码,更好地掌握大文件断点上传的实现方法。

    Android Socket调试助手教程及源码

    总之,Android Socket调试助手是开发过程中不可或缺的工具,通过学习和理解其源码,开发者可以更深入地了解Socket编程,提高网络通信的稳定性和效率。在实际项目中,可以根据自身需求对其进行定制,使其成为符合项目...

Global site tag (gtag.js) - Google Analytics