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操作。