热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

Android使用socket创建简单TCP连接的方法

这篇文章主要介绍了Android使用socket创建简单TCP连接的方法,结合实例形式详细分析了Android使用socket创建TCP连接的具体步骤与实现技巧,需要的朋友可以参考下

本文实例讲述了Android使用socket创建简单TCP连接的方法。分享给大家供大家参考,具体如下:

不管是在Java还是Android编程中,通信都是及其重要的一部分。有连接的socket编程,重要性自然毋庸置疑。

这里以一个简单的demo演示一个最基本的socket编程。

先写服务端。服务端是Java代码。笔者懒得装eclipse等编程软件,就是直接notepad编程,dos运行的。服务端一般是新建一个绑定端口的serversocket,监听客户端请求(死循环监听)。当接收到客户端消息时,读取消息、处理,然后返回给客户端。代码如下:(已有较详尽注释)

public class SimpleServer {
  /**
   * @param args
   * @throws IOException
   */
  public static void main(String[] args) throws IOException {
    // TODO Auto-generated method stub
    //创建一个ServerSocket,用于监听客户端socket的连接请求
    ServerSocket ss=new ServerSocket(50069);
    //采用循环不断接受来自客户端的请求,服务器端也对应产生一个Socket
  while(true){
  Socket s = ss.accept();
  //接收客户端消息
  BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
  System.out.println("-------------------------");
  String tt = br.readLine();
  String res = "server 回复了你的"+tt;
  System.out.println(res);
  OutputStream os=s.getOutputStream();
  os.write(res.getBytes("UTF-8"));
  System.out.println("-------------------------");
  //os.close();
  s.shutdownOutput();
  s.close();
  }
}}

客户端是新建一个绑定IP(服务端)和端口号(和服务端一样)的socket,然后以流的形式发送内容给服务端(这里的发送要注意给出结束标志,如半关闭),并读取发回的内容(此处的读取是一个等待过程,也就是说,在很长一段时间内,如果服务端发回消息则读取,没有发回则会等待,也就是阻塞)。最后关闭socket。代码如下:

public class MainActivity extends Activity implements Runnable{
  EditText show;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    show = (EditText) findViewById(R.id.edit1);
    MainActivity myThread = new MainActivity();
    Thread thread = new Thread(myThread);
    thread.start();
  }
  @Override
  public void run() {
    try {
      Socket socket = new Socket("192.168.145.96", 50069);
      //设置10秒之后即认为是超时
      socket.setSoTimeout(10000);
      //发送数据给服务端
      OutputStream outputStream = socket.getOutputStream();
      outputStream.write("hello,server".getBytes("UTF-8"));
      socket.shutdownOutput();
      //读取数据
        BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        String line = br.readLine();
        //打印读取到的数据
        Log.e("MainActivity", ">>>>>>>>>>>>>>>>>>>>>>>>>" + line);
      br.close();
      socket.close();
    } catch (UnknownHostException e) {
      // TODO Auto-generated catch block
      Log.e("UnknownHost", "来自服务器的数据");
      e.printStackTrace();
    } catch (IOException e) {
      Log.e("IOException", "来自服务器的数据");
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }
}

最后,把服务端运行起来,就可以运行客户端进行演示了。

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android通信方式总结》、《Android调试技巧与常见问题解决方法汇总》、《Android开发入门与进阶教程》、《Android多媒体操作技巧汇总(音频,视频,录音等)》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结》

希望本文所述对大家Android程序设计有所帮助。


推荐阅读
  • 创建项目:Visual Studio Online 入门指南
    本文介绍如何使用微软的 Visual Studio Online(VSO)创建和管理开发项目。作为一款基于云计算的开发平台,VSO 提供了丰富的工具和服务,简化了项目的配置和部署流程。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • MQTT技术周报:硬件连接与协议解析
    本周开发笔记重点介绍了在新项目中使用MQTT协议进行硬件连接的技术细节,涵盖其特性、原理及实现步骤。 ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • 使用Python在SAE上开发新浪微博应用的初步探索
    最近重新审视了新浪云平台(SAE)提供的服务,发现其已支持Python开发。本文将详细介绍如何利用Django框架构建一个简单的新浪微博应用,并分享开发过程中的关键步骤。 ... [详细]
  • 解决JAX-WS动态客户端工厂弃用问题并迁移到XFire
    在处理Java项目中的JAR包冲突时,我们遇到了JaxWsDynamicClientFactory被弃用的问题,并成功将其迁移到org.codehaus.xfire.client。本文详细介绍了这一过程及解决方案。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • Git管理工具SourceTree安装与使用指南
    本文详细介绍了Git管理工具SourceTree的安装、配置及团队协作方案,旨在帮助开发者更高效地进行版本控制和项目管理。 ... [详细]
  • 在创建新的Android项目时,您可能会遇到aapt错误,提示无法打开libstdc++.so.6共享对象文件。本文将探讨该问题的原因及解决方案。 ... [详细]
  • 深入理解ExtJS:从入门到精通
    本文详细介绍了ExtJS的功能及其在大型企业前端开发中的应用。通过实例和详细的文件结构解析,帮助初学者快速掌握ExtJS的核心概念,并提供实用技巧和最佳实践。 ... [详细]
  • 本文详细介绍了如何在Python3环境中配置Appium1.4.6,并指导如何连接模拟器进行自动化测试。通过本文,您将了解从环境搭建到模拟器连接的完整流程。 ... [详细]
  • Eclipse 中 JSP 开发环境配置指南
    本文详细介绍了如何在 Eclipse 集成开发环境中配置 JSP 运行环境,包括必要的软件下载、Tomcat 服务器的配置以及常见问题的解决方法。 ... [详细]
  • 本文探讨了 RESTful API 和传统接口之间的关键差异,解释了为什么 RESTful API 在设计和实现上具有独特的优势。 ... [详细]
  • 本文详细介绍如何使用Samba软件配置CIFS文件共享服务,涵盖安装、配置、权限管理及多用户挂载等关键步骤。通过具体示例和命令行操作,帮助读者快速搭建并优化Samba服务器。 ... [详细]
  • 本文详细探讨了HTTP 500内部服务器错误的成因、解决方案及其在Web开发中的影响。通过对具体案例的分析,帮助读者理解并解决此类问题。 ... [详细]
author-avatar
zhaoyunnidaye_260
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有