13.1.1
TCP/IP协议

讲的很抽象,没具体看懂什么是TCP协议,什么是IP协议。IP协议保证消息从一个主机传送到另一个主机,消息在传送的过程中被分割成一个个小包,TCP协议会让两台相互连接的计算机建立一个连接:用于发送和接收数据的虚拟链路。

TCP协议和IP协议是两个协议,但是通常一起使用,两者功能上互相补充,统称TCP/IP协议。

13.1.2
使用ServerSocket创建TCP服务器端

Java中ServerSocket用于接收来自客户端Socket的连接请求。

accept()方法用于接收一个客户端Socket的连接请求,返回值是与客户端Socket对应的服务器端的Socket。该方法是阻塞方法。

ServerSocket提供了几个构造器:

ServerSocket(int
port):port表示一个端口(0~65535),通常推荐1024以上的端口。

ServerSocket(int port,int
backlog)、ServerSocket(int port,int backlog,InetAddress
localAddr)表示目前没有用过。

服务器端使用完毕后应该用close()方法关闭,因为涉及到有关流的操作。

13.1.3
使用Socket进行通信

客户端可以使用Socket向服务器端发送链接请求,构造方法:

Socket(InetAddress/String
remoteAddress,int port):比较常用

Socket(InetAddress/String
remoteAddress,int port,InetAddress localAddr,int
localPort):适用于主机有多个IP地址的情况

Socket通过得到输入输出流进行通信:

getInputStream():返回InputStream

getOutputStream():返回OutputStream

Android访问互联网,需要添加权限:


对Socket的setSoTimeout(int
timeout)方法的说明:

1、该方法表示Socket调用InputStream的read()方法的阻塞时间,如果超过这个时间将抛出异常,但是此时Socket是有效的(此时的Socket仍然可以进行读写数据流的操作);

2、设置setSoTimeout()方法必须在Socket进入阻塞方法之前,否则无效。

setSoTimeout()方法表示Socket进行读操作的阻塞时间,如果要设置Socket的连接服务器的超时时间:

Socket s=new
Socket();//创建一个无连接的Socket

s.connect(new
SocketAddress(new
SocketAddress(host,port),timeout);//让该Socket连接到远程服务器,如果经过timeout还没有连接到,则认为连接超时

13.2使用URL访问网络资源

URL表示指向互联网资源的一个指针,通常的格式是:

protocol(协议)://host(主机):port(端口)/resourceName(资源)

主要方法:

URLConnection
openConnection():返回一个URLConnection对象,表示到URL所引用远程对象的连接。

InputStream
openStream():打开与此URL的连接,并返回一个用于读取该URL资源的InputStream。

13.2.2使用URLConnection提交请求

应用程序可以使用URLConnection向该URL发送请求,读取URL引用的资源。

和URL建立连接,发送请求,并读取此URL引用的资源的步骤:

1、调用URL的openConnection(),返回URLConnection对象;

2、设置URLConnection对象的参数和请求属性;

3、如果是发送GET请求,使用connect方法即可,如果是POST请求,需要先获取输出流来发送请求;

4、远程资源可用,应用程序可以访问该资源的头字段,或者输入流来读取该资源。

13.3.2使用ApacheHttpClient

Apache提供的开源项目HttpClient不仅可以处理HttpURLConnection的功能,还可以维护和服务器之间的Session、Cookie。

即HttpClient专注于发送请求,接收响应以及管理HTTP连接。

13.4使用WebView视图显示网页

WebView本身可以看做是一个浏览器实现,它的内核是基于WebKit引擎。

13.4.1使用WebView浏览网页

WebView提供了大量的方法执行浏览器操作,比如前进、后退、加载网页等。

13.4.2使用WebView加载HTML代码

WebView提供了loadDataWithBaseURL(String
baseUrl,String data,String mimeType,String encoding,String
historyUrl)方法加载并显示HTML代码,该方法的参数说明是:

data:指定需要加载的HTML代码

mimeType:指定HTML代码的MIME类型,对于HTML代码指定为text/html

encoding:指定HTML代码编写所用的字符集,比如指定为GBK

13.4.3使用WebView中的JavaScript调用Android方法

在WebView中通过JavaScript调用Android方法的步骤:

1、调用WebView关联的WebSettings的setJavaScriptEnabled(true)启用JavaScript调用功能。

2、调用WebView的addJavaScriptInterface(Object
object,String name)方法将object对象暴露给JavaScript。

3、在JavaScript脚本中通过刚才暴露的name对象调用Android方法。

13.5使用Web
Service进行网络编程

为了让Android应用和服务器之间进行交互的技术:

1、Java的RMI技术:要求服务器端使用Java实现;

2、CORBA技术:实现过于复杂;

3、Web
Service;

13.5.1 Web
Service平台概述

Web
Service平台主要涉及的技术有SOAP(简单对象访问协议)、WSDL(Web
Service描述语言)、UDDI(统一描述、发现和整合协议)。

13.5.2
使用Android应用调用Web Service

Android项目可以通过ksoap2-android项目来调用Web
Service操作。

网络通信机制:Socket、TCP/IP、HTTP的更多相关文章

  1. Http,Socket,TCP/IP 协议简述

    Http,Socket,TCP/IP 协议简述:https://blog.csdn.net/gordohu/article/details/54097841 TCP/IP协议,HTTP协议与webSo ...

  2. http与https与socket tcp/IP与UDP 协议等

    网络由下往上分为:   物理层--                       数据链路层-- 网络层--                       IP协议 传输层--               ...

  3. android 网络编程--socket tcp/ip udp http之间的关系

    网络七层由下往上分别为物理层.数据链路层.网络层.传输层.会话层.表示层和应用层,一般编程人员接触最多的就是应用层和运输层,再往下的就是所谓的媒体层了,不是我们研究的对象. 下面是应用层.运输层,网络 ...

  4. iOS中 HTTP/Socket/TCP/IP通信协议详解

    // OSI(开放式系统互联), 由ISO(国际化标准组织)制定 // 1. 应用层 // 2. 表示层 // 3. 会话层 // 4. 传输层 // 5. 网络层 // 6. 数据链接层 // 7. ...

  5. Socket,TCP/IP,UDP,HTTP,FTP

    1.Socket:套接字,是传输层协议的一种编程API 作用:用于描述IP地址和端口,区分来自不同应用程序的通信,实现数据传输的并发服务 JDK  Socket:在java.net包下有两个类Sock ...

  6. socket,TCP/IP的理解

    TCP/IP 要想理解socket首先得熟悉一下TCP/IP协议族, TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间 ...

  7. iOS中 HTTP/Socket/TCP/IP通信协议详解 韩俊强的博客

    每日更新关注:http://weibo.com/hanjunqiang  新浪微博 简单介绍: // OSI(开放式系统互联), 由ISO(国际化标准组织)制定 // 1. 应用层 // 2. 表示层 ...

  8. socket,TCP/IP的理解(转)

    TCP/IP 要想理解socket首先得熟悉一下TCP/IP协议族, TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间 ...

  9. iOS中 HTTP/Socket/TCP/IP通信协议具体解释 韩俊强的博客

    简介: // OSI(开放式系统互联), 由ISO(国际化标准组织)制定 // 1. 应用层 // 2. 表示层 // 3. 会话层 // 4. 传输层 // 5. 网络层 // 6. 数据链接层 / ...

  10. Android 手机应用开发经验 之 通过Socket(TCP/IP)与PC通讯

    Android 是一个开源的手机操作系统平台,已经被非常多的开发者视作未来最有潜力的智能手机操作系统.而且,在很短的时间内就在Android Market上出现大量的第三方应用程序,供用户下载与使用, ...

随机推荐

  1. js事件入门(5)

    5.窗口事件 5.1.onload事件 元素加载完成时触发,常用的就是window.onload window.onload = function(){ //等页面加载完成时执行这里的代码 } 5.1 ...

  2. ASP.NET MVC 下拉框的传值的两种方式(第二种方式未完成)

    控制器代码: public ActionResult Index() { List<SelectListItem> sli = new List<SelectListItem> ...

  3. 打造属于你的聊天室(WebSocket)

    SpringBoot 是为了简化 Spring 应用的创建.运行.调试.部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖 ...

  4. BZOJ 4055 Misc

    原题传送门 比较复杂的一道DP. 设两点(i,j)之间最短路为dis[i][j],则 可转化为: 将该式前后分立,可得: 其中,可以单独求出,后面的部分则需要DP. 设为b(x),枚举i,并计算出从i ...

  5. js/ts/tsx读取excel表格中的日期格式转换

    const formatDate = (timestamp: number) => { const time = new Date((timestamp - 1) * 24 * 3600000 ...

  6. WSL配置高翔vslam环境配置流水账

    1 安装参考博文链接:https://www.cnblogs.com/dalaska/p/12802384.html 2 Ubuntu 16.04地址:https://www.microsoft.co ...

  7. List集合-01.ArrayList

    1.ArrayList 1.1 实现了Access接口 实现标记接口Access有以下特点: 目的是允许通用算法提供良好的性能 当遍历方式不同,速度不同时,通常需要继承这个接口 1.2 ArrayLi ...

  8. django 本地项目部署uwsgi 以及云服务器部署 uwsgi+Nginx+Docker+MySQL主从

    一 .django 本地项目部署uwsgi 1 本地部署项目 uwsgi安装测试 通过uwsgi 进行简单部署 安装uwsgi命令:pip install uwsgi -i http://pypi.d ...

  9. 删除排序数组中的重复项--leetcode算法题

    题目来自于leetcode 题目描述: 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O ...

  10. bzoj3687简单题*

    bzoj3687简单题 题意: 给个集合,求所有子集的元素和的异或和.集合元素个数≤1000,整个集合的元素和≤2000000 题解: 用bitset维护每个子集元素和的个数是奇数还是偶数.每次读入一 ...