TCP/IP--Socket套接字--JAVA

目录

一、概念

二、分类

1.流套接字

2.数据报套接字

三、UDP数据报套接字编程

1.API介绍

 2.基于UDP实现简单回显服务器


一、概念

Socket套接字,是由系统提供⽤于⽹络通信的技术,是基于TCP/IP协议的⽹络通信的基本操作单元。
基于Socket套接字的⽹络程序开发就是⽹络编程。

二、分类

1.流套接字

使用传输层TCP协议。TCP协议特点:有链接、可靠传输、面向字节流、有接收缓冲区,也有发送缓冲区、大小不限。

对于字节流来说,可以简单的理解为,传输数据是基于IO流,流式数据的特征就是在IO流没有关闭的 情况下,是⽆边界的数据,可以多次发送,也可以分开多次接收。

2.数据报套接字

使用传输层UDP协议。

以下为UDP的特点: ⽆连接 、不可靠传输、 ⾯向数据报 、有接收缓冲区,⽆发送缓冲区 、⼤⼩受限:⼀次最多传输64k。
对于数据报来说,可以简单理解为发送数据是一块儿一块儿的,发送一块儿数据假如是100字节,那么接收也必须是100字节,不能分一百次每次1字节的接收。

三、UDP数据报套接字编程

1.API介绍

Socket API本身是操作系统的功能,JDK基于操作系统的API进行了封装形成了我们JAVA版本的API。

以下介绍的是UDP的Socket API:

DatagramSocket和DatagramPacket。我们查阅Java文档可以看到这两个Api的详细信息Java Documentation - Get Started

通过文档我们可以看到DatagramSocket的构造方法:

以及对它详细的解释 :

对它来说主要的方法有三个:

简单来说,我们知道计算机中的“文件”通常是一个广义的概念。文件还能代指一些硬件设备。

那么我们就可以将网卡抽象成Socket文件,操作网卡的时候就和操作普通文件差不多分为三步,打开-->读写-->关闭。由于操作网卡,直接操作是不好操作的,所以我们将操作网卡转换成操作socket文件,socket文件就相当于“网卡的遥控器”。 

基于以上这些概念,我们可以理解到DatagramSocket的构造方法就相当于打开文件,创建socket的时候就会关联上一个端口号,使用端口号来区分主机上不同的应用程序。

receive和send方法就相当于读和写。close就是关闭文件。DatagramPacket就表示一个完整的数据报。

DatagramPacket:

UDP数据报的载荷数据就可以通过构造方法来指定。

 2.基于UDP实现简单回显服务器

对于回显服务器来说,请求和响应是相同的。

首先我们需要定义一个DatagramSocket对象。我们知道对于一个服务器来说,客户端啥时候发请求,发多少个请求都是我们无法预测的,因此服务器中通常都要有一个死循环持续不断的尝试读取客户端的请求数据,也就是7*24小时运行。

以上代码便实现了一个简单的回显服务器 。 

我们还可以在简单写一个客户端来查看运行效果。

运行结果如下:

当然我们也可以在客户端加一个while循环。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值