Java网络编程——概念

基础

  • TCP协议
  • IP协议
  • TCP/IP
  • UDP协议
  • 端口
  • 套接字
  • Java.net包

InetAddress类

任何一台运行的Internet上的主机都有IP地址和当地的DNS能够解析的域名
在Java.net包中就提供了IP地址的封装类InetAddress,InetAdress类用于描述和包装一个Internet IP地址,并提供了相关的常见的方法
在JavaAPI中查找

TCP的网络编程

  • Socket
  • 重要的Socket API
  • 服务器端程序设计
  • 客户端程序设计

UDP通信概念

UDP通信又称数据包通信,UDP协议采用的是基于数据包的网络通信。数据包是一种分组交换的形式,就是把所有要传送的数据分段打包,再传出去,他是无连接型的,是把打成的每个包都作为独立的报文传出去,所以叫做数据包。
在java的UDP网络程序中,主要用到两个类,java.net.DatagramSocket和java.net.DatagramPacket类,前者是发送和接收数据的数据包套接字,后者是UDP所传输的数据包,即打包后的数据。

  1. TCP协议
    TCP (transmission Control protocol) 即传输控制协议,它是传输层协议,主要负责数据得分组和重组,TCP协议是一种可靠的数据传输协议,它是面向连接的,它可以保证数据的传送时间,顺序,和内容的正确无误。但是在保证数据高效的同时,它的传输速度往往是比较慢的,需要大量的网络开销。它的特点如下:
    (1) 面向连接的通信。
    (2) 端到端的通信。
    (3)高可靠,确保传输数据的正确性,不出现丢失和乱序。
    (4)全双工方式传输(全双工是指在发送数据的同时,也在接收数据)
    (5)采用字节流方式,即以字节流为单位传输字节序列
    (6)紧急数据传输功能

  2. IP协议
    IP(Internet Protocol)(网络之间的传输协议)简称网协,也就是计算机网络相互连接进行通信而设计的协议
    IP 是每个计算机在网络中的唯一标识
    IP地址是一个32位的(IPV4)或者128位的(IPV6)的无符号数字

  3. TCP/IP
    即传输控制协议/国际协议,是一个工业化标准的协议集,它是为广域网制作的

  4. UDP协议
    UDP(User Datagram Protocol)是指用户数据报协议,它和TCP一样都是网络传输层的协议。但是它在传输数据时,既不保证数据能否发送成功,也不保证正确性,,但是它的优点是传输时占用资源少,比较快。

  5. 端口
    端口(Port)是计算机与外界通信交流的窗口,网络上的一台计算机可以执行多个程序,每个程序都是自己的端口,要确定一台电脑上的唯一的程序,用的就是IP地址+端口号。

  6. 套接字
    套接字(Socket)是支持TCP/IP的网络通信的基本操作单元,可以看做是不同主机之间的进程进行双向通信的端面点,简单来说就是通信双方的一种约定,用套接字中的某个函数来完成通信过程。

  7. Java.net包
    这个包是用来提供网络协议的,其中包含了各种专门用于开发网络应用程序的类,使用这个类可以简单地建立TCP可靠连接,以及UDP不可靠连接

  8. Socket
    通过TCP进行通信的双方通常称为服务器端(Sever)和客户端(Client),服务器端和客户端可以在一台设备上,也可以在不同设备上。
    根据连接启动的方式及本地套接字要连接的目标,套接字之间的连接过程可以分为3个步骤:服务期监听,客户端监听,实时监控网络状态
    (1)服务器监听:是指服务器端套接字,并不定位提供客户端套接字,而是处于等待连接的状态,实时监控网络状态。
    (2)客户端请求:是指由客户端的套接字提供连接请求,要连接的目标是服务器端的套接字。为此客户端的套接字必须首先它要连接的服务器端的套接字,指出服务器端的套接字的地址和端口号,然后向服务器端套接字提供连接请求。
    (3)连接确认:是指当客户端套接字监听到或者接收到客户端套接字的连接请求,它就会响应客户端的套接字请求,建立一个新的线程,把服务器端的套接字描述发给客户端,客户端一旦确认此描述,连接就建立好了,而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。

  9. 重要的Socket API
    在这里插入图片描述

  10. 服务器端程序设计
    服务器端建立连接一般需要以下5步:
    (1)在服务器端程序中,首先创建类java.net.ServerSocket的实例对象,注册在服务器端进行连接的端口及允许连接的最大客户机数量
    (2)调用ServerSocket的成员方法accept(),等待并监听来自客户端的连接,当有客户端连接时,accept()方法将返回Socket连接通道在服务器端的套接字,通过套接字与客户端进行数据通信
    (3)调用Socket方法的getInputStream()和getOutputStream(),获取该套接字对应的输入流和输出流
    (4)通过获取的输入流和输出流与客户端进行数据通信,并处理从客户端获得的数据及需要向客户端发送的数据
    (5)在数据传输结束时,关闭输入流和输出流

  11. 客户端程序设计
    客户端建立连接一般需要4步:
    (1)在客户端程序中创建类java.netnSocket的实例对象,与服务器建立连接,在实例Socket对象时,需要指定服务器端的主机名和进行连接的端口号
    (2)调用客户端套接字的getInoutStream()和getOutoutStream(),获取该套接字对应的输入流和输出流。
    (3)通过获取的输入流和输出流与服务器端进行数据通信,并处理从客户端获取的数据及需要向服务器端发送的数据
    (4)在数据传输结束时,关闭输入流和输出流。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值