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

 更新时间:2016年04月08日 12:09:20   作者:HLbig  
这篇文章主要介绍了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程序设计有所帮助。

相关文章

  • Android仿淘宝商品详情页

    Android仿淘宝商品详情页

    这篇文章主要为大家详细介绍了Android仿淘宝商品详情页,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-10-10
  • Android用注解与反射实现Butterknife功能

    Android用注解与反射实现Butterknife功能

    Butterknife是一个在android上实现ioc(控制反转)的一个库。ioc的核心是解耦。解耦的目的是修改耦合对象时不影响另外一个对象,降低模块之间的关联。在Spring中ioc更多的是依靠xml的配置。而android上的IOC框架可以不使用xml配置
    2022-11-11
  • Flutter组件开发过程完整讲解

    Flutter组件开发过程完整讲解

    这篇文章主要介绍了Flutter组件开发过程,Flutter是Google开源的构建用户界面(UI)工具包,帮助开发者通过一套代码库高效构建多平台精美应用,支持移动、Web、桌面和嵌入式平台。Flutter 开源、免费,拥有宽松的开源协议,适合商业项目
    2022-11-11
  • 利用Kotlin的协程实现简单的异步加载详解

    利用Kotlin的协程实现简单的异步加载详解

    这篇文章主要给大家介绍了关于利用Kotlin的协程实现简单的异步加载的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-03-03
  • ubuntu下 AndroidStudio4.1启动报错问题的解决

    ubuntu下 AndroidStudio4.1启动报错问题的解决

    这篇文章主要介绍了ubuntu下 AndroidStudio4.1启动报错问题的解决,本文给大家分享个人经验对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • Android编程实现简单的UDP Client实例

    Android编程实现简单的UDP Client实例

    这篇文章主要介绍了Android编程实现简单的UDP Client,结合实例形式分析了Android实现UDP Clinet客户端的实现技巧,需要的朋友可以参考下
    2016-04-04
  • Android开发apk反编译和二次打包教程

    Android开发apk反编译和二次打包教程

    反编译不是让各位开发者去对一个应用破解搞重装什么的,主要目的是为了促进开发者学习,借鉴好的代码,提升自我开发水平。下面我们就来研究下如何进行APK反编译以及二次打包
    2016-04-04
  • Android Studio 配置忽略文件的方法实现

    Android Studio 配置忽略文件的方法实现

    这篇文章主要介绍了Android Studio 配置忽略文件的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • Android仿微信进度弹出框的实现方法

    Android仿微信进度弹出框的实现方法

    最近公司项目需要实现类似微信进度条弹出框效果,其实现方法并不难,下面给大家介绍下Android仿微信进度弹出框的实现方法,需要的朋友参考下吧
    2017-01-01
  • Android Studio kotlin生成编辑类注释代码

    Android Studio kotlin生成编辑类注释代码

    这篇文章主要介绍了Android Studio kotlin生成编辑类注释代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03

最新评论