当前位置: 首页 > news >正文

JAVASE进阶day14(网络编程续TCP,日志)

TCP

三次握手

四次挥手

package com.lu.day14.tcp;import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;public class Client {public static void main(String[] args) {try(Socket socket = new Socket("192.168.32.224",9999);){OutputStream outputStream = socket.getOutputStream();String s = """_ooOoo_o8888888o88" . "88(| -_- |)O\\  =  /O____/`---'\\____.'  \\\\|     |//  `./  \\\\|||  :  |||//  \\/  _||||| -:- |||||-  \\|   | \\\\\\  -  /// |   || \\_|  ''\\---/''  |   |\\  .-\\__  `-`  ___/-. /___`. .'  /--.--\\  `. . __."" '<  `.___\\_<|>_/___.'  >'"".| | :  `- \\`.;`\\ _ /`;.`/ - ` : | |\\  \\ `-.   \\_ __\\ /__ _/   .-` /  /======`-.____`-.___\\_____/___.-`____.-'======`=---='""";outputStream.write(s.getBytes());InputStream inputStream = socket.getInputStream();byte[] bytes = new byte[1024];int read;while ((read = inputStream.read(bytes)) != -1) {System.out.println(new String(bytes,0,read));}} catch (IOException e) {throw new RuntimeException(e);}}
}
package com.lu.day14.tcp;import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;public class Server {public static void main(String[] args) {try(ServerSocket serverSocket = new ServerSocket(9999);){while (true) {System.out.println("等待客户端连接");Socket accept = serverSocket.accept();InputStream inputStream = accept.getInputStream();byte[] bytes = new byte[1024];int read;while ((read = inputStream.read(bytes)) != -1){System.out.println(new String(bytes,0,read));}OutputStream outputStream = accept.getOutputStream();outputStream.write("你".getBytes());}} catch (IOException e) {throw new RuntimeException(e);}}
}
package com.lu.day14.tcp;import java.io.IOException;
import java.net.ServerSocket;
import java.util.ArrayList;/*** 查看自己哪个端口号被占用*/
public class Test {public static void main(String[] args) {ArrayList<Integer> list = new ArrayList<>();for (int i = 0; i < 65535; i++) {try {ServerSocket serverSocket = new ServerSocket(i);} catch (IOException e) {System.out.println(i);}}}
}

日志 

1.为什么引入日志技术?

2.日志技术与普通输出语句的区别

3.特点

4.日志体系 

 jar包是一种文件类型并且是一种压缩文件类型(类似与.zip .rar) 全程java archive (java归档文件)->压缩了很多.class文件

5.LogBack

默认是debug模式 

package com.lu.day14.log;import com.lu.day07.test.Student;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;public class LogBackLevel {private static final Logger LOG = LoggerFactory.getLogger(LogBackLevel.class);public static void main(String[] args) {//1.trace追踪级别LOG.trace("trace");Student lu = new Student("lu", 100, 100, 100);//logback可以使用大括号作为对象输出的占位符LOG.trace("学生信息{}", lu);//2.debug调试级别->在使用编程工具(idea)debug模式时,输出log应该debugLOG.debug("debug");//3.info信息级别->就相当于soutLOG.info("info");//4.warn警告级别->一般用于警告用户LOG.warn("warn");//5.error错误级别->一般用于错误信息,经常用在异常处理中catch中LOG.error("error");//6.fatal致命级别->一般用于系统崩溃,没有对应的方法}
}

resource/logback.xml会自动识别 这个xml配置文件网上会有可以搜一下(实现原理是多线程加IO)

<?xml version="1.0" encoding="UTF-8"?>
<configuration><!--CONSOLE :表示当前的日志信息是可以输出到控制台的。--><appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"><!--输出流对象 默认 System.out 改为 System.err--><target>System.out</target><encoder><!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level]  %c [%thread] : %msg%n</pattern></encoder></appender><!-- File是输出的方向通向文件的 --><appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern><charset>utf-8</charset></encoder><!--日志输出路径--><file>C:/code/itheima-data.log</file><!--指定日志文件拆分和压缩规则--><rollingPolicyclass="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><!--通过指定压缩文件名称,来确定分割文件方式--><fileNamePattern>C:/code/itheima-data2-%d{yyyy-MMdd}.log%i.gz</fileNamePattern><!--文件拆分大小--><maxFileSize>1MB</maxFileSize></rollingPolicy></appender><!--level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF, 默认debug<root>可以包含零个或多个<appender-ref>元素,标识这个输出位置将会被本日志级别控制。--><root level="DEBUG"><appender-ref ref="CONSOLE"/><appender-ref ref="FILE" /></root>
</configuration>

http://www.lryc.cn/news/405444.html

相关文章:

  • 机器学习(五) -- 无监督学习(1) --聚类1
  • leetcode 116. 填充每个节点的下一个右侧节点指针
  • [C++]优先级队列
  • 学习大数据DAY22 Linux 基 本 指 令 3与 在 Linux 系 统 中 配 置MySQL 和 Oracle
  • scp 服务器复制命令
  • PyQt5学习路线
  • 2024论文精读:利用大语言模型(GPT)增强上下文学习去做关系抽取任务
  • WEB 手柄 http通信,mcu端解析代码 2024/7/23 日志
  • cmake中的正则表达式
  • 05. Java 三大范式
  • opencv 按键开启连续截图,并加载提示图片
  • Android-- 集成谷歌地图
  • Jvm是如何处理异常的
  • recursion depth exceeded” error
  • 虚拟现实和增强现实技术系列—Expressive Talking Avatars
  • 网站验证:确保网络安全与信任的重要步骤
  • C语言——字符串比较函数strcmp和strncmp
  • redis的集群模式
  • 基于微信小程序+SpringBoot+Vue的青少年科普教学系统平台(带1w+文档)
  • 智能听觉:从任务特定的机器学习到基础模型
  • 14、如何⽤DDD设计微服务代码模型
  • ArcGIS Pro SDK (九)几何 12 多面体
  • 二次元手游《交错战线》游戏拆解
  • 【BUG】已解决:Downgrade the protobuf package to 3.20.x or lower.
  • Java开发之Redis
  • Java面试八股之 Spring Bean的生命周期
  • SQL中的函数
  • VSCode | 修改编辑器注释的颜色
  • 媒体邀约专访与群访的区别?
  • Pycharm2024最新版community社区版下载安装配置,快速上手