java基础(8)

1.网络编程

概述:就是用来实现网络互连的不同计算机上运行的程序间可以进行数据交换

网络模型

概述:计算机网络之间以何种规则进行通信,就是网络模型研究问题

网络模型一般是指:

1.OSI(Open System Interconnection开放系统互联)参考模型

  • 应用层
  • 表示层
  • 会话层
  • 传输层
  • 网络层
  • 数据链路层
  • 物理层

2.TCP/IP模型

  • 应用层
  • 传输层
  • 网络层
  • 网络接口层

网络编程三要素

  • IP地址:网络中计算机的唯一标识
  • 端口: 正在运行的程序的标识,有效端口为0-65535,其中0-1024被系统使用或保留
  • 协议:通信的规则,分为UDP协议(不安全,不可靠,速度快,不建立连接,把数据打包,数据有限制)和TCP协议(安全,可靠,速度相对较慢,建立通道传输数据,通过三次握手完成连接)

socket(网络套接字)

概述:网络上具有唯一标识的ip地址和端口号组合在一起才能构成唯一能识别的标识符套接字

socket原理:

  • 通信的两端都有socket
  • 网络通信其实就是socket间的通信
  • 数据在两个socket间通过IO传输

2.网络编程在java中的使用

InetAddress(代表互联网协议(IP)协议)

如果一个类没有构造方法,有三种情况:

  • 成员全部是静态的
  • 单例模式
  • 类中有静态方法返回该类的对象

而我们的InetAddress类就是属于第三种情况,他通过静态方法返回本类的对象

InetAddress的成员方法:

  • public static InetAddress getName(String host):根据主机名或者ip地址的字符串得到IP地址对象
  • public String getHostName():获得主机对象的主机名
  • public String getHostAddress():获得主机对象的IP地址

代码示例:

UDP协议发送接受数据

UDP发送数据的步骤:

  • 创建发送端Socket对象
  • 创建数据,并把数据打包
  • 调用socket对象的发送方法发送数据
  • 释放资源

代码实现:

UDP协议接受数据的步骤:

  • 创建接收端Socket对象
  • 创建一个数据包(接受容器)
  • 调用Socket对象的接受方法接受数据
  • 解析数据,并显示在控制台
  • 释放资源

代码示例:

补充:发送端和接收端要想通信,就得先开启接收端,再开启发送端,但是没有接收端,发送端开启也不会报错,因为UDP不保证数据可以被接收到

多线程实现UDP聊天室代码实现:

TCP协议发送接受数据

TCP发送数据的步骤:

  • 创建发送端的Socket对象:如果这步成功了,说明连接已经建立了,因为如果没有连接成功,是会报错的
  • 获取输出流,写数据
  • 释放对象

代码示例:

TCP接收数据的步骤:

  • 创建接收数据的Socket对象
  • 监听客户端连接,返回一个对应的Socket对象
  • 获取输入流,读取数据显示在控制台
  • 释放资源

代码示例:

补充:TCP发送端启动前,必须要有接受端,不然就会报错,因为TCP是可靠的,保证信息被接收到的

TCP上传文本文件并给出反馈代码案例:

补充:通过while循环可以使得以上的服务端(接受端)接收多个客户端(发送端),但是这个是有问题的,因为当有多个客户端连接时,单线程的服务端就需要一个一个处理,等待,不符合实际情况,所以,我们想要让服务器接受多个客户端,就必须得使用多线程

更多了解请参考:https://www.cnblogs.com/linhaifeng/articles/5937962.html

https://www.cnblogs.com/linhaifeng/articles/5951486.html

posted @   luyi001  阅读(109)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示