IP地址和端口号
IP地址用于唯一的标识网络中的一个通信实体,这个通信实体既可以是一台主机,也可以是一台打印机,或者是路由器的某一端口。而在基于IP协议网络中传输的数据包,都必须使用IP地址来进行标识。

一个通信实体可以有多个通信程序同时提供网络服务,此时还需要使用端口。端口是一个16位的整数,用于表示数据交给哪个通信程序处理,因此端口就是应用程序与外界交流的出入口,它是一种抽象的软件结构,包括一些数据结构和I/O缓冲区。

不同的应用程序处理不同端口上的数据,同一台机器上不能有两个程序使用同一端口,端口号可以从0到65535,通常将它们分为如下三类。
1:公认端口(Well Known Ports): 从0到1023,它们紧密绑定(Binding)一些特定的服务。
2:注册端口(Registered Ports): 从1024到49151,它们松散的绑定一些服务。应用程序通常应该使用这个范围内的端口。
3:动态和私有端口 : 从49151到65535,这写端口是应用程序使用的动态端口,应用程序一般不会主动使用这些端口。

java的基本网络支持
使用InetAddress
java提供了InetAddress类来代表IP地址,InetAddress下还有两个子类:Inet4Address,InetA6ddress,它们分别代表IPv4地址和IPv6地址。
InetAddress类没有提供构造器,而是提供了如下两个静态方法来获取对应的InetAddress对象。
getByName(String host):根据主机获取对应的InetAddress对象。
getByAddress(byte[] addr):根据原始IP地址来获取对应的InetAddress对象。

 

使用URLDecoder和URLEncoder
URLDecoder和URLEncoder用于完成普通字符串和application/x-www-form-urlencoded MIME 字符串之间的相互转换。
当搜索时关键字包含中文时,这些关键字就会变成“乱码”,这就是所谓的 application/x-www-form-urlencoded MIME字符串。

当URL地址里包含非西欧字符的字符串时,系统会将这些字符串转换成特殊字符串。编程过程中可能涉及普通字符串和特殊字符串的相互转换,这就需要使用 URLDecoder和URLEncoder类。

URLDecoder类包含一个decode(String s, String rnc)静态方法,它可以将看上去是乱码的特殊字符串转换成普通字符串。

URLEncoder类包含encode(String s, String enc)静态方法,它可以将普通字符串转换成  application/x-www-form-urlencoded MIME字符串。

两者互相转换需要指定字符集。

 

 

网络编程
(1)网络编程:用Java语言实现计算机间数据的信息传递和资源共享
(2)网络编程模型
(3)网络编程的三要素
A:IP地址
a:点分十进制
b:IP地址的组成
c:IP地址的分类
d:dos命令
e:InetAddress
B:端口
是应用程序的标识。范围:0-65535。其中0-1024不建议使用。
C:协议
UDP:数据打包,有限制,不连接,效率高,不可靠
TCP:建立数据通道,无限制,效率低,可靠
(3)Socket机制
A:通信两端都应该有Socket对象
B:所有的通信都是通过Socket间的IO进行操作的
(4)UDP协议发送和接收数据(掌握 自己补齐代码)
发送:
创建UDP发送端的Socket对象
创建数据并把数据打包
发送数据
释放资源

接收:
创建UDP接收端的Socket对象
创建数据包用于接收数据
接收数据
解析数据包
释放资源
(5)TCP协议发送和接收数据
发送:
创建TCP客户端的Socket对象
获取输出流,写数据
释放资源

接收:
创建TCP服务器端的Socket对象
监听客户端连接
获取输入流,读取数据
释放资源

posted on 2016-03-01 14:20  所谓荣耀  阅读(242)  评论(0编辑  收藏  举报