Day32

*计算机网络:为实现资源共享和信息的传递,通过信息线路连接起来的若干主机(Host)

​ 互联网:点与点相连

​ 万维网:端与端相连

​ 物联网:物与物相连

​ 网络编程:让计算机与计算机之间建立连接、进行通信

*TCP/IP模型:

​ 一:网络接口层,负责建立电脑与电脑直接物理设备的连接(例如,网线,路由器,网卡等)

​ 二:网络层,物理连接实现之后,需要对每台电脑进行区分,这就给每台电脑分配了一个IP地址,就像我们的身份证一样

​ 三:传输层:电脑之间的信息交互需要遵从一个协议:TCP/UDP

​ 四:应用层:应用层是直接与用户进行交互的,所以我们封装了一个更加方便,简单易懂的上层协议(类似于加了一个包装类):HTTP SMTP FTP。

用户和服务器之间的时用HTTP协议(本质上也是TCP),计算机与计算机之间使用TCP协议

*TCP/UDP:

​ TCP协议:是一种面向连接的、可靠的、基于字节流的传输层通信协议。数据大小没有限制。建立连接需要进行三次握手,断开连接需要4次挥手

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qKmD7mWE-1584494126639)(C:\Users\吴一凡\AppData\Roaming\Typora\typora-user-images\image-20200317121618832.png)]

​ UDP协议:是一种没有连接环节的传输层协议,提供面向失误的简单不可靠信息传送服务,每个包的大小为64kb

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vRGDtzbF-1584494126641)(C:\Users\吴一凡\AppData\Roaming\Typora\typora-user-images\image-20200317121807541.png)]

*127.0.0.1 和 localhost 都是指本机。 查看IP命令:ipconfig 测试IP命令:ping D.D.D.D

*端口号:port,在通信实体上进行网络铜须的程序的唯一标识。通俗来说,端口号就是程序在计算机上的身份证。

*InetAddress类:概念,表示ID地址对象,封装了与该IP地址相关的所有信息,并提供了获取信息的常用方法。

import java.net.InetAddress;
import java.net.UnknownHostException;public class TestInetAddress {public static void main(String[] args) {try {InetAddress ia = InetAddress.getLocalHost();System.out.println("主机名"+ia.getHostName());System.out.println("主机地址"+ia.getHostAddress());} catch (UnknownHostException e) {e.printStackTrace();}try {//·获取所有的IP地址InetAddress[] ia2 = InetAddress.getAllByName("www.baidu.com");for (InetAddress inetAddress : ia2) {System.out.println(inetAddress.getHostAddress());}} catch (UnknownHostException e) {e.printStackTrace();}}
}

*Socket编程:Socket是网络中的一个通信节点

​ 分为客户端Socket与服务器端ServerSocket;通信要求:IP+端口号

package com.qianfeng.pm.demo2;import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;/*** @author 吴一凡*   服务器端*/
public class DemoServer {public static void main(String[] args) {int port = 8888;try {//·主动指定一个端口,那么客户端代码,就可以通过这个端口找到服务端ServerSocket serversocker = new ServerSocket(port);System.out.println("服务端启动...等待客户端连接...");InetAddress ia;Socket server;OutputStream os;while(true) {//·开启监听,等待客户的连接server = serversocker.accept();//·会变成阻塞状态,等待客户端连接,才会继续执行//·通过socket对象获取客户端主机对象ia = server.getInetAddress();//·通过socket对象来获取输出流对象//·通过输出流给客户端发信息os = server.getOutputStream();//·用桥接器将字节流转换成字符流BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));//·发送数据给客户端bw.write("hello "+ia.getHostAddress()+"\n");//·加上换行使客户端可以通过readline来读取//·调用flush刷新缓冲区,并发送消息,这里不能用close关闭流。bw.flush();//·通过输入流 接收客户端发送过来的信息InputStream is = server.getInputStream();//·用桥接器将字节流转换成字符流BufferedReader br = new BufferedReader(new InputStreamReader(is));//·读取一行信息,必须以换行作为结尾的信息才能读到String msg = br.readLine();System.out.println("客户端发送给我的信息:"+msg);}} catch (IOException e) {e.printStackTrace();}}
}package com.qianfeng.pm.demo2;import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.net.UnknownHostException;/*** @author 吴一凡* 客户端*/
public class DemoClient {public static void main(String[] args) {//·和服务器进行连接,必须要知道服务器端的ip地址和端口号String ip = "127.0.0.1";int port = 8888;Socket client;try {client = new Socket(ip,port);System.out.println("与服务端连接成功");//·通过输入流 接收服务端发送过来的信息InputStream is = client.getInputStream();//·用桥接器将字节流转换成字符流BufferedReader br = new BufferedReader(new InputStreamReader(is));//·读取一行信息,必须以换行作为结尾的信息才能读到String msg = br.readLine();System.out.println("服务端发送给我的信息:"+msg);//·给服务器发送消息OutputStream os = client.getOutputStream();BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));bw.write("你好我是一个客户端\n");bw.flush();} catch (UnknownHostException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}
}bw.write("你好我是一个客户端\n");bw.flush();} catch (UnknownHostException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}
}

千峰JAVA逆战班Day32相关推荐

  1. 千峰JAVA逆战班Day49

    Day49 *下载文件案例:就是使用IO传输数据 private String resourceLocation = "D:\\Users\\t\\nginx-1.17.2\\html\\a ...

  2. 千峰JAVA逆战班Day35

    Day35 *注解:就是给代码中的方法,属性,参数等贴上了一个标签 注解的定义:@interface 注解名字 public @interface MyAnno{} 用法:在你想要贴上注解的地方的前面 ...

  3. 千峰JAVA逆战班Day38

    Day38 *连接查询:必须是两个或以上表之间且一定有主外键关系,才能进行连接查询 ​ I. 内连接:inner join on SELECT bid,bname,bprice,book.`tid`, ...

  4. 千峰JAVA逆战班Day40

    Day40 *对执行DQL的方法进行封装 ​ I. 连接,设置参数等方式跟封装DML是一样的,但是DQL返回的是一个结果集,所以需要对这个结果集进行处理.那么怎么处理呢?自然是封装到一个集合当中进行返 ...

  5. 千峰JAVA逆战班Day47

    Day47 *服务器的请求流程: *请求的方式:get 和 post,请求分为请求头和请求体 ​ I. get 请求的信息会直接显示在网页的地址栏. ​ II. post 请求的信息不会直接显示在网页 ...

  6. 千峰JAVA逆战班Day36

    Day36 *二阶段介绍:通过前端网页,将我们后台写的逻辑代码和数据,去供别人使用 *数据库(有服务端和客户端 ): ​ I. 可以用txt等文件存储,为什么还需要数据库? ​ 因为使用数据库存储会更 ...

  7. 千峰JAVA逆战班Day48

    Day48 *在昨天的注册案例上加一个功能:用户注册之后,给用户返回一个html页面,告知用户注册成功,且有用户的所有信息(必须是中文) ​ I. 如果需要有中文,那么中文乱码问题肯定是要考虑的:所以 ...

  8. 千峰JAVA逆战班Day37

    Day37 *DQL语句(数据库查询语句) I. 关系型数据库:表与表之间可以建立关系:称之为主外键. ​ 主键:在一个表中可以唯一标识一条记录,不能重复,不可为空. ​ 外键:当前表中的外键指的是另 ...

  9. 字节跳动面试官:千峰java培训多少钱

    并发编程三大特性 原子性 一个操作或者多次操作,要么所有的操作全部都得到执行并且不会受到任何因素的干扰而中断,要么所有的操作都执行,要么都不执行. 对于基本数据类型的访问,读写都是原子性的[long和 ...

  10. 千峰java 笔记整理_千锋--多线程笔记

    进程:正在运行的程序 多线程处于宏观上的并行/微观上的串行状态 第一种实现多线程的方法: 新增类继承Thread 重写run方法 在测试类中创建子对象调用start()方法启动该子线程 第二种实现多线 ...

最新文章

  1. springboot情操陶冶-web配置(四)
  2. C++中return语句的用法
  3. React的组件模式
  4. C++ STL : 模拟实现STL中的容器适配器stack和queue
  5. samba3.2的安装全过程(tar方式)
  6. Linux通过进程号查询占用的端口
  7. Python进行websocket接口测试
  8. DEBUG -- CLOSE BY CLIENT STACK TRACE问题的两种解决方案,整理自网络
  9. Eclipse快捷键与使用技巧总结
  10. [零基础学python]为什么要开设本栏目
  11. python程序设计实训报告-Python编程实践(1)
  12. 最全静态网页模板网站
  13. 梯度下降与支持向量机
  14. C6中休假申请与人事软件的跨服务器数据库整合,已处理。
  15. SD/SDHC/SDXC区别
  16. 数据库连接_由浅入深搭建Mybatis框架
  17. PPT幻灯片放映不显示备注,只让备注显示在自己屏幕上-投影机 设置
  18. 腾讯T1~T9级别工程师分别需要具备哪些能力你知道吗?
  19. ansible的play任务
  20. (转)开膛破肚!惠普独显双核dv2000拆解

热门文章

  1. 视频剪辑教程,视频批量分割,分割后的新视频怎么保存
  2. wordpress企业网站模板
  3. 笔记本安装双系统教程
  4. kiv8测量方法_室内门标准及测量方法
  5. 论找对客服妹子对修改邓白氏码的公司信息的重要性
  6. [框架]高并发中的惊群效应
  7. iOS UINavigationController导航条背景透明
  8. win7无法查看win10工作组计算机,解决:win7系统工作组计算机无法访问我的计算机(图文)...
  9. 聚划算创意新零售,这个“加油站”不加油只加奶?
  10. python 正则表达式 r_python 正则表达式