热门标签 | 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程序设计有所帮助。


推荐阅读
  • 本文详细介绍如何在IntelliJ IDEA 14中打包Android应用APK文件,并提供查询SHA1值的具体步骤。 ... [详细]
  • JavaWeb技术架构解析
    本文探讨了JavaWeb开发中客户端与服务器端的交互模式,重点分析了B/S(浏览器/服务器)和C/S(客户端/服务器)两种架构的特点及应用场景。 ... [详细]
  • 探索Squid反向代理中的远程代码执行漏洞
    本文深入探讨了在网站渗透测试过程中发现的Squid反向代理系统中存在的远程代码执行漏洞,旨在帮助网站管理者和开发者了解此类漏洞的危害及防范措施。 ... [详细]
  • Spring Cloud因其强大的功能和灵活性,被誉为开发分布式系统的‘一站式’解决方案。它不仅简化了分布式系统中的常见模式实现,还被广泛应用于企业级生产环境中。本书内容详实,覆盖了从微服务基础到Spring Cloud的高级应用,适合各层次的开发者。 ... [详细]
  • Java EE CDI:解决依赖关系冲突的实例
    在本教程中,我们将探讨如何在Java EE的CDI(上下文和依赖注入)框架中有效解决依赖关系的冲突问题。通过学习如何使用限定符,您将能够为应用程序的不同客户端提供多种接口实现,并确保每个客户端都能正确调用其所需的实现。 ... [详细]
  • 本文介绍了如何使用Gradle和gdx-setup.jar工具来创建LibGDX项目,包括详细的步骤和注意事项,适合初学者和有经验的开发者。 ... [详细]
  • MyEclipse技巧:高效生成toString方法
    本文将介绍如何在MyEclipse中快速且高效地生成toString方法,帮助开发者简化编码过程,提高开发效率。 ... [详细]
  • 本文提供了详细的步骤,介绍如何将基于Maven的Java EE项目从Eclipse IDE部署到JBoss应用服务器上。适合初学者和中级开发者参考。 ... [详细]
  • 本文总结了WebSphere应用服务器出现宕机问题的解决方法,重点讨论了关键参数的调整,包括数据源连接池、线程池设置以及JVM堆大小等,旨在提升系统的稳定性和性能。 ... [详细]
  • Gradle复合构建详解
    自Gradle 3.3起,复合构建功能得以实现,这是一种能够整合其他独立构建的高级构建模式。本文将详细介绍复合构建与多项目构建的区别,以及如何在实际项目中应用复合构建。 ... [详细]
  • 2014年4月17日,深入研究了邵杨的代码库,发现代码中的注释较为稀少,影响了理解的效率。同时,学习了一些Eclipse的高效操作技巧。 ... [详细]
  • 推荐两款实用的网络诊断工具
    大家好,因为一些私事很久没有更新博客了。今天向大家介绍两款非常有用的网络诊断工具——Tracert和Telnet,帮助你更好地理解和解决网络问题。 ... [详细]
  • 在Java应用程序开发过程中,FTP协议被广泛用于文件的上传和下载操作。本文通过Jakarta Commons Net库中的FTPClient类,详细介绍如何实现文件的上传和下载功能。 ... [详细]
  • 使用C# .NET构建UDP点对点聊天应用
    本文详细介绍如何利用C# .NET框架开发一个基于UDP协议的点对点聊天程序,包括客户端与服务器之间的连接建立、数据传输等核心功能。 ... [详细]
  • 深入解析Android中的SQLite数据库使用
    本文详细介绍了如何在Android应用中使用SQLite数据库进行数据存储。通过自定义类继承SQLiteOpenHelper,实现数据库的创建与版本管理,并提供了具体的学生信息管理示例代码。 ... [详细]
author-avatar
xiejiahui62272
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有