Java Network Programming笔记

来源:互联网 发布:mac qq发离线文件 编辑:程序博客网 时间:2024/05/16 07:43

复习java network Programming

本书的目的是让我们知道java底层组件的结构,以及它们是如何组合、封装来实现网络通讯的。作者举出的例子主要还是以HTTP协议为主。

 

在java网络编程接口的结构:

 

IO stream: inputstream/outputstream,以及在他们之上的filter、buffer。不管你的资源是http、ftp、本地文件系统,你都要经过input、output bytes,并把这些bytes转化为你所需要的格式。

network IO里面比较重要的概念是Blocking、Non-Blocking。

 

Socket: 其实sun科学家对Socket API的划分要比c、c++系统下的api更加合适。其特点有二,明确的区分了server、client,也就是serverSocket和Socket,serverSocket的工作室lister一个端口,让后返回Socket。不像C的api,需要通过传入的parameter来区分。

另外sun的socket是要返回output、input对象的,真正的读写工作于socket本身分离了,socket只专注于对这条数据通路的设置,而不关注与读写。

socket是把tcp/ip协议三层之上的数据传输给你,而本身你是可以对socket作一些设置的,这些设置主要是对第三层(tcp、udp)协议的控制,比如tcp、udp的选择,timeout的设置等等。

 

在掌握了socket和 io stream后,就可以利用api写一些简单的network程序,并且知道底层代码运作情况。

 

Threads:多线程编程在写network server时是必须的,你绝对不会让你的服务器作为单线程跑把?多线程模型中的关键点是临界区的访问,锁等等。

 

在IO stream、Socket、Threads三大块你都掌握好后,下一步是对tcp/ip四层的协议开刀,protocol handler由你来写,apache基金的httpcore和httpclient就提供http协议的接口,另外sun的URL package也包含了很多protocol handler,不过他们都是放在sun的package中,而不是java,由此可见sun对自己的工作关注点是非常明确的。

 

 

原创粉丝点击