Java网络编程

来源:互联网 发布:公司logo设计软件 编辑:程序博客网 时间:2024/06/07 16:13

一、网络通信

IP地址:
1. IP网络中每台主机都必须有一个惟一的IP地址;
2. IP地址是一个逻辑地址;
3. 因特网上的IP地址具有全球唯一性;
4. 32位,4个字节,常用点分十进制的格式表示,例如:192.168.0.16。

协议:
1. 为进行网络中的数据交换(通信)而建立的规则、标准或约定;(=语义+语法+规则) ;
2. 不同层具有各自不同的协议。

端口号:
端口使用一个16位的数字来表示,它的范围是0–65535,1024以下的端口号保留给预定义的服务。例如:http使用80端口。

二、OSI(Open System Interconnection)参考模型

  1. 物理层:二进制传输,确定如何在通信信道上传递比特流;

  2. 数据链路层:加强物理层的传输功能,建立一条无差错的传输线路;

  3. 网络层:在网络中数据到达目的地有很多线路,网络层就是负责找出最佳的传输线路;

  4. 传输层:传输层为源端计算机到目的端计算机提供可靠的数据传输服务,隔离网络的上下层协议,使得上层网络应用的协议与下层无关;传输控制协议TCP、用户数据报协议UDP;

  5. 会话层:在两个相互通信的应用进程之间建立、组织和协调其相互之间的通信;

  6. 表示层:处理被传送数据的表示问题,也就是信息的语法和语义,如有必要将使用一种通用的格式在多种格式中进行转换;

  7. 应用层:为用户的应用程序提供网络通信服务;

三、网络编程

Java中通过代码在传输层中进行数据的传递,通过TCP协议或UDP协议实现其功能。

1.基于TCP的Socket编程步骤:

服务器程序编写
① 调用ServerSocket(int port)创建一个服务器端套接字,并绑定到指定端口上;

ServerSocket server = new ServerSocket(port);

②调用accept(),监听连接请求,如果客户端请求连接,则接受连接,返回通信套接字;

Socket  socket = server.accept();

③调用Socket类的getOutputStream()和getInputStream()获取输出流和输入流,开始网络数据的发送和接收;

InputStream in = socket.getInputStream();

④最后关闭通信套接字。

socket.close();

客户端程序编写
①调用Socket()创建一个流套接字,并连接到服务器端;

Socket socket = new Socket(ip, port);

②调用Socket类的getOutputStream()和getInputStream()获取输出流和输入流,开始网络数据的发送和接收;

InputStream in = socket.getInputStream();

③最后关闭通信套接字。

socket.close();

2.基于UDP的Socket编程步骤(简单介绍,不常用):

接收端程序编写
①调用DatagramSocket(int port)创建一个数据报套接字,并绑定到指定端口上;

②调用DatagramPacket(byte[] buf, int length),建立一个字节数组以接收UDP包 ;

③调用DatagramSocket类的receive(),接收UDP包;

④最后关闭数据报套接字。

发送端程序编写
①调用DatagramSocket()创建一个数据报套接字;

②调用DatagramPacket(byte[] buf, int offset, int length, InetAddress address, int port),建立要发送的UDP包;

③调用DatagramSocket类的send(),发送UDP包;

④最后关闭数据报套接字。

原创粉丝点击