zoukankan      html  css  js  c++  java
  • 网络通信机制:Socket、TCP/IP、HTTP

    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操作。
  • 相关阅读:
    NJU 操作系统实验三
    Oracle数据库的下载安装和配置
    实模式/保护模式
    FAT12
    FAT12 img tool
    Mysql InnoDB 数据更新/删除导致锁表
    程序员,你总要有点自己的想法吧!
    支付系统安全设计思维导图
    从实时清分手续费记账看代码的易读性
    (7/8)借助枚举说一下数据类型定义规范
  • 原文地址:https://www.cnblogs.com/mxzhan/p/13340931.html
Copyright © 2011-2022 走看看