网络编程TCP/IP通信协议(自学用)
2021/11/25 20:13:35
本文主要是介绍网络编程TCP/IP通信协议(自学用),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录
- 第一天:网络编程
- 第二天:IP与端口
- 第三天: URL
- 第四天:UDP实现
- 第五天:TCP实现
- 第六天:单向登录&双向登录
第一天:网络编程
第二天:IP与端口
上图中的localhost是127.0.0.1的域名
InetAddress是JDK中的ip处理类
jdk的API中文文档
运行结果:
端口号(port),名字(hostname),IP地址的关系
第三天: URL
- 访问页面必须得遵守http协议
- 你访问的页面在浏览器中看到的任何页面其实大都是html页面
- 在浏览器中访问你得输入某个页面的索引、路径或者说资源地址(url)
运行结果:
第四天:UDP实现
套接字:
其实很好理解:
就像是我想给你邮一个水杯,但是我不可能就一个水杯邮给你,我是不是要把它装在盒子里面,盒子里面填充一些泡沫,然后我还要在盒子上贴一个你的地址,这就是封装啊,反之就是拆封。
一般什么时候,什么场景下用到socket呢?
就是你要给网站或者app实现一个聊天功能,进行网络数据传输
DatagramSocket:
此类表示用于发送和接收数据报包的套接字。
数据报套接字是分组传送服务的发送或接收点。 在数据报套接字上发送或接收的每个数据包都是单独寻址和路由的。 从一台机器发送到另一台机器的多个分组可以被不同地路由,并且可以以任何顺序到达。
DatagramPacket
该类表示数据报包。
数据报分组用于实现无连接分组传递服务。 每个消息仅根据该数据包中包含的信息从一台机器路由到另一台机器。 从一台机器发送到另一台机器的多个数据包可能会以不同方式路由,并且可能以任何顺序到达。 无法保证数据包传输。
通过参数的不同来区分作用,接受和发送…
UDP实现的基本流程:
发送端定义:
发送端实现:
接收端定义:
接收端实现:
运行结果:
若在接收端加入如下代码:
输出结果:
里面有一些不熟悉的类或者函数可以查阅上面JDK的API文档。
第五天:TCP实现
TCP协议是基于IO流的。
所以在TCP协议下,我要定义客户端,就用socket这个类;定义服务端用serveSocket类
我往服务器发送数据,就是数据从我这儿写出去,那对我来说就是一个输出的过程
客户端定义与实现:
注意:上面这张图中的:
127.0.0.1和6666是服务器端的地址和端口
Class Socket:该类实现客户端套接字(也称为“套接字”)。 套接字是两台机器之间通信的端点。
服务器端定义与实现:
Class ServerSocket:该类实现服务器套接字。 服务器套接字等待通过网络进入的请求。 它根据该请求执行某些操作,然后可能将结果返回给请求者。
注意:运行的时候,要先运行服务器,再运行客户端。
第六天:单向登录&双向登录
单向登录:
客户端:
服务端:
因为要判断登录时输入的用户名和密码是否正确,所以要在//3.io这一部分后面加入校验流程:
运行结果:
双向登录:也就是实时地将单向登录的服务器的登录结果传输到客户端,然后客户端接收到结果。
客户端:
在2、io和3、关闭之间添加如下代码:
服务端:
将上面这部分代码修改为:
这篇关于网络编程TCP/IP通信协议(自学用)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享