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. 如何在一个HTML文件中嵌套另一个HTML文件并且可以进行切换HTML文件

    使用iframe 要点:a标签+iframe A标签的target属性 iframe 的id与name属性 示例: <!DOCTYPE html> <html> <hea ...

  2. QtableWidget用法流程

    QtableWidget用法流程 ​ 作者:流火 日期:2020/5/10 QTableWidget的基本构造函数 QTableWidget 是QTableview的子类.主要去呗是QTableVie ...

  3. Python之浅谈多态和封装

    目录 组合 什么是组合 为什么使用组合 多态和多态性 多态 什么是多态? 多态性 好处 多态性 什么是多态性 封装 封装是什么意思? 隐藏 如何用代码实现隐藏 python 实际上是可以访问隐藏属性的 ...

  4. Ribbon软负载 (F版)

    Spring Cloud 为开发者提供了在分布式系统中的一些常用的组件(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁定,决策竞选,分布式会话集群状态).使用Sprin ...

  5. docker 运行镜像

    docker run -e "环境变量=值“ --nam 别名 -v /etc/localtime:/etc/localtime:ro [时区保持跟宿主机器一致]-d -p 21021:80 ...

  6. 解决wpf项目中无法添加OpenFileDialog 实例的问题

    直接添加引用:using Microsoft.Win32; 或者放置鼠标于OpenFileDialog OpenFileDialog ofd = new OpenFileDialog(); 操作点击

  7. java实现在一个字符串中查找某个子字符串出现的次数

    public static void main(String[] args) { String a = "我爱我的祖国!!!"; String b = "爱"; ...

  8. directive 实例讲解

    http://my.oschina.net/ilivebox/blog/289670 gulp-nodemon http://www.zhihu.com/question/32123388?sort= ...

  9. git clone远程仓库的指定分支

    正常clone方式 git clone <远程仓库地址> 默认clone的是远程仓库的master分支 clone指定分支 git clone -b <分支名> <远程仓 ...

  10. GAN网络从入门教程(三)之DCGAN原理

    目录 DCGAN简介 DCGAN的特点 几个重要概念 下采样(subsampled) 上采样(upsampling) 反卷积(Deconvolution) 批标准化(Batch Normalizati ...