Java网络编程

一、网络通信

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包;

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值