Java Web 编程入门知识

来源:互联网 发布:gradle java版本 编辑:程序博客网 时间:2024/04/27 15:12

Java SE 的内容基本都讲完了.


但是 Java一般用于网络编程, 就是所谓的web编程. Java SE讲的基本上都是本地程序的内容. 

而Java web编程需要在两个程序中传输数据, 以后就是Java EE的前提知识了.


一. 什么是网络程序(Web Program)

以前Java SE 的内容将的都是java 或 面向对象的基本知识, 所编写的程序都是本地程序.

那么什么是网络程序呢.


定义很简单:

     能够接受另一台计算机发过来的的数据或者能够向另1台计算机发送数据的程序就是网络程序.


为什么要强调另一台计算机呢,

因为在同一台计算中两个程序有很多方法互相通信(例如互相读写同1个本地文件), 但是这两个程序就不一定是网络程序了.


二. 什么是ip 地址.

能够在网络上唯一表示1台计算的编号就是ip地址了, 这个大家都懂.

在同1层网络中, 每台主机都必须有1个唯一的ip地址.

ip地址是1个逻辑地址.



三. 数据是怎样在网络上传输的.

例如计算机A发送1张照片给计算机B, 那么这张照片是如何在网络传输的.


首先, 网络上传输的都是二进制数据, 所以一张照片是不能在网线上传输的.

通常来讲, 发送端程序会将这照片转化成字节数组, 然后把这个字节数组打包成若干个数据包(DatagramPacket).


然后把数据包1个1个地放向给B程序. B程序接收到数据包后再解封, 得到字节数组, 再还原成1张图片.

所以实际上网络上的数据是1个接1个的数据包在传输!

四. 什么端口号(Port)

一台计算机可以同时运行多个网络程序.

例如计算B同时运行着firefox 和 pidigin. B的网卡接受到计算机A的数据包, 那么B会将这个数据包分给Firefox 还是 Pidgin来处理?


为了解决这个问题, 就需要1个标签. 在同1台计算机(B)中, 每1个网络程序都必须分配1个唯一的标签.

例如Firefox 的标签是80,   Pidgin的标签是9000.


而同样地, 计算机A发送数据包前, 必须为数据包贴上1个标签, 表示将这个数据包发给目标计算的哪个程序.


这个标签实际上是端口号码(port).


假如B网卡接受到1个数据包, 发现该数据包贴上的标签是80, 就会交给本地占用80端口的程序(Firefox).


所以计算A发送数据包前, 必须同时指定数据包的目标pid地址, 和目标程序(端口).


端口1个用16bit数字来表示的, 它的范围是0 ~ 65535, 1024 以下的端口保留给预定义的服务, 例如80是网页, 25是邮件发送.

oracle的默认端口是1521, tomcat默认的端口是8080.


一个防火墙开放了1个端口(例如8888), 并不是在墙上打开1个洞, 而是这个防火墙不会过滤掉 端口是8888的数据包!


五.协议

一.协议定义:

     为进行网络中的数据交换(通信)而建立的规则,标准或约定.


二. 常见协议

UDP: UDP协议是无连接的, 不可靠的传输协议, 类似与写信.

     通俗来讲, 计算机A(发送方) 不会 关心 计算机B(接收方)的状态, 直接地把数据包发送出去.

     也就是当计算机B不在线时, 数据包可能会被丢失.


TCP: 面向连接的可靠传输协议, 类似与打电话.

     也就是所计算机A(发送方) 必须在发送数据包前 建立一条与计算B(接受方的) 连接请求, 在这条连接建立后, 才可以发送数据. 保证每个数据包都成功地发送到计算机B.


6. 套接字(Socket)

单屏名字很难理解.


实际上Socket是美国伯克利大学在Unix上推出的1个工具, 程序猿使用这个工具可以很方便地访问TCP/IP. 从而开发各种网络程序.

随着Unix的推广, windows和java也引用了Socket这个编程模型.


下一遍文章会详细讲解基于Socket的UDP编程.



0 0
原创粉丝点击