网站建设验收,网站建设与管理试题,最大网络公司排名,花店网站建设规划书目录 #x1f4cc; 网络编程概述
#x1f4cc; 网络模型 #x1f4cc; TCP协议 #x1f4cc; UDP协议 #x1f4cc; TCP编程 #x1f4cc; 网络编程概述 ✍什么是计算机网络#xff1f; 把分布在不同地理区域的计算机设备, 通过物理线路连接起来#xff0c;最终实现…目录 网络编程概述 网络模型 TCP协议 UDP协议 TCP编程 网络编程概述 ✍什么是计算机网络 把分布在不同地理区域的计算机设备, 通过物理线路连接起来最终实现数据传输, 资源共享. ✍什么是网络编程
在网络的基础上开发的程序能够进行数据传输.
java语言是支持网络的, 并且将网络连接的细节都封装起来了对外提供一套网络库就可以进行统一环境的网络编程
✍要进行网络数据传输的核心问题
如何找到网络世界中的目标主机和程序IP和端口
找到后如何高效安全的进行数据传输协议
OK那就让我们带着这两个问题来一探究竟吧 网络模型
✎ 理论有七层网络模型-----现实中是四层模型 应用层 —— 内容 传输层 —— 加入协议控制 网络层 —— IP 物理层 —— 网线 光纤 网络通信的三要素 IP 端口号 通信协议 ○ IP
IP地址是指互联网协议地址, 可以理解为计算机的地址 ; 如 ipconfig 局域网IP 192.168 , 本机回环地址127.0.0.1 (访问自己电脑
○ 端口号
计算机运行的每个程序都对应分配一个整数的编号, 不能重复 ; 范围: 0~65535 ; 一般0~1024已经被系统使用或保留, 例如MySQl的端口号是3306. 端口对应程序 IP对应设备 ○ 通信协议
是一种规范和约定计算机网络中实现通信必须有一些约定即通信协议对速率传输代码代码结构出错后如何应对...等制定规则. TCP协议 ✍Transmission Control Protocol 传输控制协议 安全可靠但传输效率低 ① 客户端向服务器端发送数据前首先要建立连接测试网络是否通畅
三次握手 1. 客户端向服务器发送连接请求 2. 当服务器接收到客户端连接请求后给客户端做出一个回应 3. 客户端为服务器的回应再次做出确认回应
② 正式传输数据
③ 断开时需相互确认
四次挥手 1. 客户端向服务器发送一个断开请求 2. 服务器向客户端做出一个回应 3. 服务器端把没有传完的数据传输完毕再向客户端做出回应 4. 客户端向服务器端的回应做出回应 断开... UDP协议 ✍User Datagram Protocol 用户数据协议
• 把要发送的数据封装成一个数据包数据包包含数据、对方的IP、 对方端口。
• 只管发送即可是否发送成功是不知道的 ( 由于没有建立连接故发送信息成功与否不晓得 )
优点不需要建立双方连接传输速度快.
缺陷由于没有建立连接它是不安全的. TCP网络编程 ✎ 搭建服务器
• new ServerSocket端口
• ServerSocket中的accept()方法来监听客户端的连接此时程序阻塞 try {//创建服务器对象ServerSocket serverSocket new ServerSocket(8888);//(端口)System.out.println(服务器启动成功);//监听客户端是否发送链接请求服务器Socket socket serverSocket.accept();//等待监听客户端的连接System.out.println(有客户连接到了服务器);} catch (IOException e) {e.printStackTrace();}
✎ 搭建客户端
• new Socket服务器IP端口 try {//创建客户端Socket socket new Socket(127.0.0.1,8888);// (服务器的IP,端口)} catch (IOException e) {e.printStackTrace();}
✎后续的操作就需要用到IO流了 在客户端输出一个字符串, 并转换为字节的形式写入程序 public static void main(String[] args) {//创建客户端try {Socket socketnew Socket(127.0.0.1,8888);//服务器的IP 端口String s你好世界;OutputStream outputStreamsocket.getOutputStream();outputStream.write(s.getBytes());} catch (IOException e) {e.printStackTrace();}} 在服务器输入客户端输出的字节并将其转为字符串进行打印 public static void main(String[] args) {//创建服务器对象try {ServerSocket serverSocket new ServerSocket(8888);System.out.println(服务器启动成功);//监听客户端是否发送链接请求服务器Socket socket serverSocket.accept();//监听客户端的连接System.out.println(有客户端连接到了服务器);//后续操作...InputStream inputStreamsocket.getInputStream();byte[] bytes new byte[100];int size inputStream.read(bytes);String s new String(bytes,0,size);System.out.println(s);} catch (IOException e) {e.printStackTrace();System.out.println(服务器启动失败端口已被占用);}} 进阶实现单线程聊天
○ 我们通过while循环和Scanner控制台输入实现服务器与客户端交替聊天
○ 我们使用包装流DateInputStreamDateOutputStream来输入输出可以直接读到一个字符串, 无需进行字符串与字节的转换. /*服务器*/static Scanner scanner new Scanner(System.in);public static void main(String[] args) {try {//创建服务器ServerSocket server new ServerSocket(20049);System.out.println(服务器启动成功!);//监听客户端的连接Socket socket server.accept();System.out.println(有客户端连接到了服务器!);//服务器接收客户端的消息while (true) {DataInputStream inputStream new DataInputStream(socket.getInputStream());String string inputStream.readUTF();System.out.println(服务器: string);//向客户端发送消息System.out.println(----客户端:);String str scanner.next();DataOutputStream dataOutputStream new DataOutputStream(socket.getOutputStream());dataOutputStream.writeUTF(str);}} catch (IOException e) {e.printStackTrace();}} /*客户端*/static Scanner scanner new Scanner(System.in);public static void main(String[] args) {try {Socket socket new Socket(127.0.0.1, 20049);while (true) {System.out.println(---服务器:);String s scanner.next();DataOutputStream output new DataOutputStream(socket.getOutputStream());output.writeUTF(s);DataInputStream inputStream new DataInputStream(socket.getInputStream());String string inputStream.readUTF();System.out.println(服务器: string);}} catch (IOException e) {e.printStackTrace();}} 补充
✎ 本机回环地址127.0.0.1
✎ 获取服务器的IP ipconfig 局域网IP 以 192.168 开头