Java基础学习--网络编程

1 网络编程

概述:网络编程就是用来实现 网络互联的 不同计算机上 运行的程序间 可以进行数据交互。即:用来实现不同电脑之间的数据通信的

三要素

  • IP地址:设备在网络中的唯一标识.

    组成:网络(关)号码 + 主机地址. //例如: 192.168.10.66
    分类:

    局域网: 3 + 1, 即: 前3段是网关号码, 最后一段是ip地址.例如: 192.168.37.0 到 192.168.37.255 理论上来讲最大支持256个IP.

    广域网: 2 + 2

    城域网: 1 + 3

    一个特殊的IP:127.0.0.1 本地回环(回路)地址, 即: 表示本机.

  • 端口号:程序在设备上的唯一标识。

    **范围:**0 到 65535, 其中0 到 1023已经被系统占用了或者用作保留端口, 我们在使用端口号的时候要避开这个区间.

  • 协议:就是程序间进行交互, 通信的规则.

    分类:

    UDP: //举例: QQ群聊, 微信群聊

    • 面向无连接.
    • 采用数据报包的形式发送数据, 每个包的大小不能超过64KB.
    • 是不安全(不可靠)协议.
    • 效率相对比较高.
    • 不区分服务器端和客户端, 叫: 发送端和接收端.

    ​ 视频会议通常采用UDP协议,因为这种情况即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。但是在使用UDP协议传送数据时,由于UDP的面向无连接性,不能保证数据的完整性,因此在传输重要数据时不建议使用UDP协议

    TCP: //举例: 打电话

    • 面向有连接(三次握手)
    • 采用IO流的形式发送数据, 理论上来讲数据无大小限制.
    • 是安全(可靠)协议.
    • 效率相对比较低.
    • 区分服务器端和客户端.

​ 第一次握手,客户端向服务器端发出连接请求,等待服务器确认。第二次握手,服务器端向客户端回送一个响应,通知客户端收到了连接请求。第三次握手,客户端再次向服务器端发送确认信息,确认连接。

​ 完成三次握手,连接建立后,客户端和服务器就可以开始进行数据传输了。由于这种面向连接的特性,TCP协议可以保证传输数据的安全,所以应用十分广泛。例如上传文件、下载文件、浏览网页等

常用DOS指令:

  • ipconfig /all 查看本机ip
  • ping ip地址 -t 测试网络连接.

InetAddress类

概述:此类表示Internet协议(IP)地址

常用方法

方法名说明
static InetAddress getByName(String host)确定主机名称的IP地址。主机名称可以是机器名称,也可以是IP地址
String getHostName()获取此IP地址的主机名
String getHostAddress()返回文本显示中的IP地址字符串
2 UDP

概述:UDP协议是一种不可靠的网络协议,它在通信的两端各建立一个Socket对象,但是这两个Socket只是发送,接收数据的对象,因此对于基于UDP协议的通信双方而言,没有所谓的客户端和服务器的概念。Java提供了DatagramSocket类作为基于UDP协议的Socket。

发送端

  • 构造方法
方法名说明
DatagramSocket()创建数据报套接字并将其绑定到本机地址上的任何可用端口
DatagramPacket(byte[] buf,int len,InetAddress add,int port)创建数据包,发送长度为len的数据包到指定主机的指定端口
  • DatagramSocket常用方法
方法名说明
void send(DatagramPacket p)发送数据报包
void close()关闭数据报套接字
void receive(DatagramPacket p)从此套接字接受数据报包
  • 步骤

    创建发送端的Socket对象(DatagramSocket)

    创建数据,并把数据打包

    调用DatagramSocket对象的方法发送数据

    关闭发送端

接收端

  • 构造方法
方法名说明
public DatagramSocket(int port)创建数据报套接字并将其绑定到指定端口号
DatagramPacket(byte[] buf, int len)创建一个DatagramPacket用于接收长度为len的数据包
  • DatagramPacket常用方法
方法名说明
byte[] getData()返回数据缓冲区
int getLength()返回要发送的数据的长度或接收的数据的长度
  • 步骤

    创建接收端的Socket对象(DatagramSocket)

    创建一个数据包,用于接收数据

    调用DatagramSocket对象的方法接收数据

    解析数据包,并把数据在控制台显示

    关闭接收端

两种方式接受键盘输入的数据:

//采用JDK封装好的类实现
Scanner sc = new Scanner(System.in);

//自定义封装键盘录入
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

3 TCP

概述:Java对基于TCP协议的的网络提供了良好的封装,使用Socket对象来代表两端的通信端口,并通过Socket产生IO流来进行网络通信。Java为客户端提供了Socket类,为服务器端提供了ServerSocket类。

客户端

  • 构造方法
方法名说明
Socket(InetAddress address,int port)创建流套接字并将其连接到指定IP指定端口号
Socket(String host, int port)创建流套接字并将其连接到指定主机上的指定端口号
  • 常用方法
方法名说明
InputStream getInputStream()返回此套接字的输入流
OutputStream getOutputStream()返回此套接字的输出流

服务端

  • 构造方法
方法名说明
ServletSocket(int port)创建绑定到指定端口的服务器套接字
  • 常用方法
方法名说明
Socket accept()监听要连接到此的套接字并接受它
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值