java 网络编程
2012-09-15 18:28
288 查看
java 网络编程
网络体系结构:国际标准化组织ISO于l978年提出“开放系统互连参考模型”,
即著名的OSI(Open System Interconnection)模型。
该模型把计算机网络分成物理层、数据链路层、网络层、传输层、会话层、表示层、应用层等七层。
网络是信息传输、接收、共享的虚拟平台,通过它把各个点、面、体的信息联系到一起,从而实现这些资源的共享。
java可以通过TCP协议和UDP协议实现与网络的交互。
通信协议:计算机网络中实现通信的约定,它对速率、传输代码、代码结构、传输控制步骤、出错控制等制定标准。
UDP协议:UDP是一种无连接的协议,每个数据报都是一个独立的信息,包
括完整的源或目的地址,它在网络上以任何可能的路径传往目的地,因此
能否到达目的地,到达目的地的时间以及内容的正确性都是不能被保证的。
为什么使用UDP:在网络质量令人不十分满意的环境下,UDP协议数据包丢
失会比较严重。但是由于UDP属于连接性协议,因此具有资源消耗小,处理
速度快的优点。
在java中如何使用UDP:
使用位于JDK中java.net包下的DatagramSocket和DatagramPacket类,可以非常方便地控制用户数据报文。
DatagramSocket类:创建接收和发送UDP的Socket实例
1、DatagramSocket():创建实例。通常用于客户端编程,它并没
有特定监听的端口,仅仅使用一个临时的。【注意:在创建
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。
网络体系结构:国际标准化组织ISO于l978年提出“开放系统互连参考模型”,
即著名的OSI(Open System Interconnection)模型。
该模型把计算机网络分成物理层、数据链路层、网络层、传输层、会话层、表示层、应用层等七层。
网络是信息传输、接收、共享的虚拟平台,通过它把各个点、面、体的信息联系到一起,从而实现这些资源的共享。
java可以通过TCP协议和UDP协议实现与网络的交互。
通信协议:计算机网络中实现通信的约定,它对速率、传输代码、代码结构、传输控制步骤、出错控制等制定标准。
UDP协议:UDP是一种无连接的协议,每个数据报都是一个独立的信息,包
括完整的源或目的地址,它在网络上以任何可能的路径传往目的地,因此
能否到达目的地,到达目的地的时间以及内容的正确性都是不能被保证的。
为什么使用UDP:在网络质量令人不十分满意的环境下,UDP协议数据包丢
失会比较严重。但是由于UDP属于连接性协议,因此具有资源消耗小,处理
速度快的优点。
在java中如何使用UDP:
使用位于JDK中java.net包下的DatagramSocket和DatagramPacket类,可以非常方便地控制用户数据报文。
DatagramSocket类:创建接收和发送UDP的Socket实例
1、DatagramSocket():创建实例。通常用于客户端编程,它并没
有特定监听的端口,仅仅使用一个临时的。【注意:在创建
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。
相关文章推荐
- 《黑马程序员》java笔记->网络编程
- Java网络编程——使用NIO实现非阻塞Socket通信
- BASE64编码(网络机器人JAVA编程指南学习)
- Java网络编程一:NIO网络模型分析
- Java 网络编程
- Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)
- Java 网络编程
- 黑马程序员---java基础知识(十):网络编程
- Java学习笔记之网络编程(二):TCP
- java网络编程
- 18天Java学习---Java的Socket网络编程以及多线程
- Java网络编程之组播小案例
- 黑马程序员--JAVA网络编程
- Java网络编程之HttpURLConnection
- 梦入IBM之java基础-网络编程
- Java基础--网络编程1
- 黑马程序员—Java 网络编程
- Java网络编程(二)
- Java基础知识强化之网络编程笔记24:Android网络通信之 AndroidAsync(基于nio的异步通信库)
- Java一步一脚印—UDP网络编程的简单实现