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

本文实例为大家分享了Android socket的实现原理,供大家参考,具体内容如下

Socket套接字

是网络上具有唯一标识的IP地址和端口号组合在一起才能构成唯一能识别的标识符套接字。

socket实现的原理机制:

1、通信的两端都有Socket

2、网络通信其实就是Socket间的通信

3、数据在两个Socket间通过IO传输

建立Socket(客户端)和ServerSocket(服务器端)

建立连接后,通过Socket中的IO流进行数据的传输

关闭socket

同样,客户端与服务器端是两个独立的应用程序。

服务器端思路

1、建立服务器端的socket服务,需要一个端口
2、服务端没有直接的操作,而是通过accept方法获取客户端对象,在通过获取到的客户端对象的流和客户端进行通信
3、通过客户端获取流对象的方法,读取数据或者写入数据
4、如果服务完成,需要关闭客户端,然后关闭服务器,但是,一般会关闭客户端,不会关闭服务器,因为服务端是一直提供服务的

服务端实现代码

// 创建服务器端
    ServerSocket server = new ServerSocket(5555);

    while(true){
    // 等待连接
    Socket accept = server.accept();

    OutputStream outputStream = accept.getOutputStream();
    outputStream.write("你好,我是服务器!\r\n".getBytes());
    outputStream.flush();

    // 读取数据
    InputStream inputStream = accept.getInputStream();

    BufferedReader reader = new BufferedReader(new InputStreamReader(
        inputStream));
    System.out.println("服务器:" + reader.readLine());

     outputStream.close();
     inputStream.close();
    }

客户端思路

1、建立客户端的Socket服务,并明确要连接的服务器。
2、如果连接建立成功,就表明,已经建立了数据传输的通道.就可以在该通道通过IO进行数据的读取和写入.该通道称为Socket流,Socket流中既有读取流,也有写入流.
3、通过Socket对象的方法,可以获取这两个流
4、通过流的对象可以对数据进行传输
5、如果传输数据完毕,关闭资源

客户端实现代码

 //创建套接字 确定要连接的服务器ip与端口口
    Socket socket=new Socket("172.17.23.77",5555);

    InputStream inputStream = socket.getInputStream();
    BufferedReader br=new BufferedReader(new InputStreamReader(inputStream));
    String readLine = br.readLine();
    System.out.println("客户端:"+readLine);

    //向服务器发送消息
    OutputStream outputStream = socket.getOutputStream();
    outputStream.write("你好\r\n".getBytes());
    outputStream.flush();

    outputStream.close();
    inputStream.close();

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 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编程之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创建简单TCP连接的方法

    本文实例讲述了Android使用socket创建简单TCP连接的方法.分享给大家供大家参考,具体如下: 不管是在Java还是Android编程中,通信都是及其重要的一部分.有连接的socket编程,重要性自然毋庸置疑. 这里以一个简单的demo演示一个最基本的socket编程. 先写服务端.服务端是Java代码.笔者懒得装eclipse等编程软件,就是直接notepad编程,dos运行的.服务端一般是新建一个绑定端口的serversocket,监听客户端请求(死循环监听).当接收到客户端消息时,

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

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

  • Android Socket通信详解

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

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

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

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

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

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

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

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

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

随机推荐