网络体系结构:国际标准化组织ISO于l978年提出“开放系统互连参考模型”,
即著名的OSI(Open System Interconnection)模型。
该模型把计算机网络分成物理层、数据链路层、网络层、传输层、会话层、表示层、应用层等七层。
java可以通过TCP协议和UDP协议实现与网络的交互。
括完整的源或目的地址,它在网络上以任何可能的路径传往目的地,因此
能否到达目的地,到达目的地的时间以及内容的正确性都是不能被保证的。
失会比较严重。但是由于UDP属于连接性协议,因此具有资源消耗小,处理
速度快的优点。
在java中如何使用UDP:
使用位于JDK中java.net包下的DatagramSocket和DatagramPacket类,可以非常方便地控制用户数据报文。
DatagramSocket类:创建接收和发送UDP的Socket实例
有特定监听的端口,仅仅使用一个临时的。【注意:在创建
DatagramSocket类实例时,如果端口已经被使用,会产生一个
SocketException的异常抛出,并导致程序非法终止,这个异常应该注意捕
获】
2、DatagramSocket(int port):创建实例,并固定监听Port端口
的报文。
3、DatagramSocket(int port, InetAddress localAddr):这是
个非常有用的构建器,当一台机器拥有多于一个IP地址的时候,由它创建
的实例仅仅接收来自LocalAddr的报文。
UDP发送端:
建立udpsocket服务端点。该端点建立,系统会随机分配一个端口。如果不
想随机配置,可以手动指定。
DatagramSocket ds = new DatagramSocket();
将数据进行packet包的封装,必须要指定目的地地址和端口。
byte[] buf = "wo shi shu ju".getBytes();
DatagramPacket dp =new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.254"),9002);
通过socket服务的send方法将该包发出。
ds.send(dp);
将socket服务关闭。主要是关闭资源。
ds.close();
UDP接收端:
建立udp的socket服务。要监听一个端口。
DatagramSocket ds = new DatagramSocket(9002);
定义一个缓冲区,将该缓冲区封装到packet包中。
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf,buf.length);
通过socket的receive方法将数据存入数据包中。
ds.receive(dp);
通过数据包dp的方法getData()、getAddress()、getPort()等方法获取包中的指定信息。
最后关闭socket————ds.close();
在java中如何使用TCP:
编写TCP网络服务程序,首先要用到java.net.ServerSocket类用以创建服务器Socket
ServerSocket(int port):创建绑定到特定端口的服务器套接字
ServerSocket(int port, int backlog):利用指定的backlog(服务器忙时保持连接请求的等待客户数量),
创建服务器套接字并将其绑定到指定的本地端口号。
ServerSocket(int port, int backlog, InetAddress bindAddr):
使用指定的端口、侦听 backlog 和要绑定到的本地 IP 地址创建服务器。
TCP客户端:
创建Socket
Socket connection =new Socket(127.0.0.1,9009);
获得I/O流
ObjectInputStream input=new ObjectInputStream(connection.getInputStream());
对I/O流进行读写操作
ObjectOutputStream output=new ObjectOutputStream(connection.getOutputStream());
关闭I/O流
output.close();
input.close();
关闭Socket
connection.close();
TCP服务端:
创建一个ServerSocket
ServerSocket server=new ServerSocket(port);
从ServerSocket接受客户连接请求
Socket s =server.accept();
创建一个服务线程处理新的连接
在服务线程中,从socket中获得I/O流
ObjectInputStream in=new ObjectInputStream(s.getInputStream());
对I/O流进行读写操作,完成与客户的交互
ObjectOutputStream out=new ObjectOutputStream(s.getOutputStream());
关闭I/O流
out.close();
in.close();
关闭Socket
s.close();
URL类的使用
URL常用的2个构造方法:
Public URL(String str)
Public URL(URL context,String str)
获得URL对象后,常常调用一下方法:
String getFile():获取此URL的资源名。
String getHost():获取此URL的主机名。
String getPath():获取此URl的路径部分。
String getPort():获取此URL的端口号。
String getProtocol():获取此URL的协议名称。
String getQuery():获取此URL的查询字符串部分。
URLConnection openConnection():返回一个URLConnection对象,它表示到URL所引用的远程对象的连接。
InputStream openStream():打开与此URL的连接,并返回一个用于读取该URL资源的InputStream。