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

(0)

相关推荐

  • Android Socket通信详解

    一.Socket通信简介  Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信.两者的最大差异在于,http连接使用的是"请求-响应方式",即在请求时建立连接通道,当客户端向服务器发送请求后,服务器端才能向客户端返回数据.而Socket通信则是在双方建立起连接后就可以直接进行数据的传输,在连接时可实现信息的主动推送,而不需要每次由客户端想服务器发送请求. 那么,什么是socket?Socket又称套接字,在程序内部提供了与外界通信的端口,即端口通信.通过

  • Android中使用WebSocket实现群聊和消息推送功能(不使用WebView)

    WebSocket protocol 是HTML5一种新的协议.它实现了浏览器与服务器全双工通信(full-duplex).WebSocket是Web2.0时代的新产物,用于弥补HTTP协议的某些不足,不过他们之间真实的关系是兄弟关系,都是对socket的进一步封装,其目前最直观的表现就是服务器推送和聊天功能.更多知识参考:如何理解 TCP/IP, SPDY, WebSocket 三者之间的关系? 今天的重点是讲如何在Android中脱离WebView使用WebSocket,而不是在Web浏览器

  • android开发socket编程之udp发送实例分析

    本文实例讲述了android开发socket编程之udp发送实现方法.分享给大家供大家参考.具体分析如下: 需要实现的功能:采用udp下的socket编程,当按下确认键,模拟器发送文本框数据,pc机上的网络调试助手接收 一.环境: win7 + eclipse + sdk 二.代码: package test.soket; //import com.test_button.R; import java.io.DataOutputStream; import java.io.IOException

  • python服务器与android客户端socket通信实例

    本文实例讲述了python服务器与android客户端socket通信的方法.分享给大家供大家参考.具体实现方法如下: 首先,服务器端使用python完成,下面为python代码: 复制代码 代码如下: #server.py  import socket  def getipaddrs(hostname):#只是为了显示IP,仅仅测试一下      result = socket.getaddrinfo(hostname, None, 0, socket.SOCK_STREAM)      re

  • Android中使用socket通信实现消息推送的方法详解

    原理 最近用socket写了一个消息推送的demo,在这里和大家分享一下. 主要实现了:一台手机向另外一台手机发送消息,这两台手机可以随时自由发送文本消息进行通信,类似我们常用的QQ. 效果图: 原理:手机通过socket发送消息到服务器,服务器每接收到一条消息之后,都会把这条消息放进一个messageList里面,服务器会不停地检测messageList是否含有消息,如果有的话就会根据messageList里面item的数据,推送到相应的另一端手机上面. 下面简单画了一个图来说明这个原理: 演

  • Android中Socket通信的实现方法概述

    本文实例简述了Android中Socket通信的实现方法,具体内容如下: 一.socket通信概述 通俗的来说套接字(socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元.它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口. 应用层通过传输层进行数据通信时,TCP会遇到同时为多个应用程序进程提供并发服务的问题.多个TCP连接或多个应用程序进程可能需要通过同一个TCP

  • Android编程之客户端通过socket与服务器通信的方法

    本文实例讲述了Android编程之客户端通过socket与服务器通信的方法.分享给大家供大家参考,具体如下: 下面是一个demo,Android客户端通过socket与服务器通信. 由于Android里面可以完全使用java.io.*包和java.net.*包,那么,实际上,逻辑部分与J2SE没有区别.只是UI代码不一样. Android客户端通过socket与服务器通信分为下面5步: (1)通过IP地址和端口实例化Socket,请求连接服务器: 复制代码 代码如下: socket = new

  • Android编程实现基于局域网udp广播自动建立socket连接的方法

    本文实例讲述了Android编程实现基于局域网udp广播自动建立socket连接的方法.分享给大家供大家参考,具体如下: android开发中经常会用到socket通讯.由于项目需要,最近研究了一下这方面的知识. 需求是想通过wifi实现android移动设备和android平台的电视之间的文件传输与控制. 毫无疑问这中间一定需要用到socket来进行通信.今天就两台设备的握手连接方式分享一下吧,该方法只是本人个人想法的实现,仅供参考,如有雷同,不胜荣幸. 要想使用socket进行通讯,就必须知

  • Android NDK中socket的用法以及注意事项分析

    Android NDK中使用socket的整个过程分为以下几部分:第一部分: 创建socket并绑定IP和端口 复制代码 代码如下: #include <sys/select.h>#include <sys/socket.h>#include <arpa/inet.h>#define MAX_DATA_BUF_LEN 10240int sd = INVALID_SOCKET;sockaddr_in addr_org;  // 发送端地址sd = socket(AF_IN

  • Android socket实现原理详解 服务端和客户端如何搭建

    本文实例为大家分享了Android socket的实现原理,供大家参考,具体内容如下 Socket套接字 是网络上具有唯一标识的IP地址和端口号组合在一起才能构成唯一能识别的标识符套接字. socket实现的原理机制: 1.通信的两端都有Socket 2.网络通信其实就是Socket间的通信 3.数据在两个Socket间通过IO传输 建立Socket(客户端)和ServerSocket(服务器端) 建立连接后,通过Socket中的IO流进行数据的传输 关闭socket 同样,客户端与服务器端是两

随机推荐