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. 逻辑式编程语言极简实现(使用C#) - 1. 逻辑式编程语言介绍

    相信很多朋友对于逻辑式编程语言,都有一种最熟悉的陌生人的感觉.一方面,平时在书籍.在资讯网站,偶尔能看到一些吹嘘逻辑式编程的话语.但另一方面,也没见过周围有人真正用到它(除了SQL). 遥记当时看&l ...

  2. dart快速入门教程 (2)

    2.变量和数据类型 2.1.变量和常量 变量通俗的说就是可以变化的量,作用就是用来存储数据,你可以把一个变量看作是一个水果篮,里面可以装苹果.梨.香蕉等,常量就是一个固定的值,和变量是相对的,变量可以 ...

  3. springMVC中的HttpSession与Model

    目录 1.1 spring的@MODELATTRIBUTE 2.1 session的概念 3.1 示例 4.1 为什么springmvc框架要使用model这个对象呢? 突然发问:相信很多人在做WEB ...

  4. P3008 [USACO11JAN]Roads and Planes G 拓扑排序+Dij

    题目描述 Farmer John正在一个新的销售区域对他的牛奶销售方案进行调查.他想把牛奶送到T个城镇 (1 <= T <= 25,000),编号为1T.这些城镇之间通过R条道路 (1 & ...

  5. c++随机生成树

    分析 当我们写完一道题,自认为它是正解,但是交上去却WA的时候,我们该怎么办呢 当我们已经想出了一道的暴力解法,又想出了一种比较优秀的解法,但不知道这种解法对错与否,我们该怎么办呢 答案显然是对拍 对 ...

  6. 核心知识点:python入门

    目录 一.python入门day1-day24 day01-03 编程语言 day04 变量 day05 垃圾回收机制(GC机制) 1 引用计数 2 标记清除 3 分代回收 day05 程序交互与基本 ...

  7. day39 作业

    实现生产消费原理 from multiprocessing import Process,JoinableQueue import time import random def cooker(q): ...

  8. vue中使用ts时如何导入mixins

    方法一 // mixins.ts import { Vue } from "vue-property-decorator"; export class TableSelect ex ...

  9. Unity- 小“东西”

    菜单栏遍历处理预制体工具 public class GameEditor : Editor { private static void ProcessPrefabs(Action<GameObj ...

  10. 使用Java带你打造一款简单的英语学习系统

    [一.项目背景] 随着移动互联网的发展,英语学习系统能结构化的组织海量资料.针对用户个性需求,有的放矢地呈现给用户,从而为英语学习者提供便利,提升他们的学习效率. [二.项目目标] 1. 实现美观的界 ...