Tomcat通信概念篇
在上一篇了解完网络通信的基本概念之后,本章节为了解Tomcat的基本逻辑方便以后对
UDP:(发短信,不管是否能接受成功都会发送)
//发送端
//不需要连接服务器
public static void main(string[] args)throws Exception {
//1.建立一个socket
DatagramSocket socket=new Datagramsocket();
//2.建个包
String msg ="你好啊,服务器!";
InetAddress localhost = InetAddress.getByName("localhost");
int port = 9090;
// 数据,数据的长度起始,要发送给谁
DatagramPacket, packet = new DatagramPacket(msg.getBytes(), offset: 0, msg.getBytes().length, localhost, port);
//3.发送包
socket.send(packet);
//4.关闭流
socket.close();
//接收端
public static void main(string[] args)throws Exception {
//开放端口
Datagramsocket socket=new Datagramsocket(9090);
// 接收数据包
byte[ buffer = new byte[1024];
DatagramPacket packet = new DatagramPacket(buffer, 0, buffer.length);
//阻塞接收
socket.receive(packet);
system.out.printin(packet.getAddress().getHostAddress());
System.out.printin(new string(packet.getData(),0,packet.getLength()));
//关闭连接
socket.close();
}
UDP:建立聊天通话(建立连接成功才能发送,但服务端只能接受消息不能回复消息)
//发送端
public static void main(string[] args)throws Exception {
DatagramSocket socket = new DatagramSocket( port: 8888);
//准备数据:控制台读取
system.inBufferedReader reader = new BufferedReader(new InputstreamReader(System.in));
while(true){
  String data=reader.readLine();
  byte[] datas = data.getBytes();
  DatagramPacket packet = new Datagrampacket(datas, 0,datas.length,new InetsocketAddress(hostname: "localhost", 6666);
  socket.send(packet);
  if(data.equals("bye")){
    break;
  }
  socket.close();
//接收端
public static void main(string[l args)throws Exception {
Socket socket=new DatagramSocket( port:6666);
while(true){
/准备接收包裹
byte[] container = new byte[1024];
DatagramPacket packet = new DatagramPacket(container,0,container.length);
//阻赛式接收包表
socket.receive(packet);
//断开连接
byte[] data = packet.getData();
String receiveData = new string(data, offset: 0, data.length);
System.out.println(receiveData);
if(receiveData.equals("bye")){
  break;
}
socket.close();
UDP(打电话,双方都可发送接收,用到了多线程)
//发送端
public class TalkSend implements Runnable{
  DatagramSocket socket =null;
  BufferedReaderreader = null;
  private int fromPort;
  private string toIp;
  private int toPort;
//建立有参构造
public Talksend(int fromPort, string toIP, int toPort){
  this.fromPort = fromPort;
  this.toIp = toIP;
  this.toPort = toPort;
  try {
    socket = new DatagramSocket(fromPort);
    reader = new BufferedReader(new InputStreamReader(System.in));
  }catch(Exception e){
    e.printstackTrace();
  }
}
@0verride
public void run(){
  while(true){
    try {
    String data=reader.readLine();
    byte[] datas =data.getBytes();
    DatagramPacket packet = new Datagrampacket(datas,0,datas.length,new InetsocketAddress(this.toIp,this.toPort));
    socket.send(packet);
    if(data.equals("bye")){
      break;
    }catch(Exception e){
    e.printstackTrace();
    }
  }
  socket.close();
}
//接收端
public class TalkReceive implements Runnable {
  DatagramSocket socket =null;
  private int port;
  private string msgFrom;
public TalkReceive(int port,string msgFrom){
  this.port = port;
  this.msgFrom = msgFrom;
  try {
  socket = new DatagramSocket(port);
  }catch(socketException e){
    e.printstackTrace();
  }
}
@Override
public void run(){
  while(true){
    //淮备接收包褰
    try{
    byte[] container =new byte[1024];
    DatagramPacket packet = new DatagramPacket(container,0,container.length);
    //阻塞式接收包表
    socket.receive(packet);
    //断开连接 bye
    byte[] data= packet.getData();
    String receiveData=new String(data,0, data.length);
    System.out.println(msgFrom +":"+receiveData);
    if(receiveData.equals("bye")){
      break;
    }catch(IoException e){
      e.printstackTrace();
    }
}
    socket.close();
}
实现A B用户之间建立通讯互相发送信息
调用A
public class Talkstudent {
public static void main(string[]args){
//开启两个线程
new Thread(new TalkSend(7777,"localhost",9999)).start();
new Thread(new TalkReceive(8888,"老师")).start();
}
调用B
public static void main(string[] args){
new Thread(new Talksend(5555,"localhost",8888)).start();
new Thread(new TalkReceive(9999,"学生")).start();
Tomcat通信概念篇的更多相关文章
- 【转帖】H5 手机 App 开发入门:概念篇
		H5 手机 App 开发入门:概念篇 http://www.ruanyifeng.com/blog/2019/12/hybrid-app-concepts.html 作者: 阮一峰 日期: 2019年 ... 
- 鸿蒙内核源码分析(进程概念篇) | 进程在管理哪些资源 | 百篇博客分析OpenHarmony源码 | v24.01
		百篇博客系列篇.本篇为: v24.xx 鸿蒙内核源码分析(进程概念篇) | 进程在管理哪些资源 | 51.c.h .o 进程管理相关篇为: v02.xx 鸿蒙内核源码分析(进程管理篇) | 谁在管理内 ... 
- 【转】android 电容屏(二):驱动调试之基本概念篇
		关键词:android 电容屏 tp 工作队列 中断 多点触摸协议平台信息:内核:linux2.6/linux3.0系统:android/android4.0 平台:S5PV310(samsung ... 
- TOMCAT  ---> servlet概念
		1 TOMCAT ---> servlet概念 2 TOMCAT 目录结构 (各个文件夹都存放什么东西) 3 TOMCAT 程序的层级 web | |---- js,jsp,html,css ( ... 
- 我的TDD实践---TDD概念篇
		“我的TDD实践”系列之TDD概念篇 写在前面: 我的TDD实践这几篇文章主要是围绕测试驱动开发所展开的,其中涵盖了一小部分测试理论,更多的则是关注工具的使用及环境的搭建,做到简单实践先行,后理论专精 ... 
- DNA拷贝数变异CNV检测——基础概念篇
		DNA拷贝数变异CNV检测——基础概念篇 一.CNV 简介 拷贝数异常(copy number variations, CNVs)是属于基因组结构变异(structural variation), ... 
- 【黑金原创教程】 FPGA那些事儿《概念篇》
		简介一本讲述非软硬片上系统的书,另外还是低级建模的使用手册. 目录[黑金原创教程] FPGA那些事儿<概念篇>:File01 - 结构的玩笑[黑金原创教程] FPGA那些事儿<概念篇 ... 
- 常见面试题整理--Python概念篇
		希望此文可以长期更新并作为一篇Python的面试宝典.每一道题目都附有详细解答,以及更加详细的回答链接.此篇是概念篇,下一篇会更新面试题代码篇. (一).这两个参数是什么意思:*args,**kwar ... 
- Linux Capabilities 入门教程:概念篇
		原文链接:Linux Capabilities 入门教程:概念篇 Linux 是一种安全的操作系统,它把所有的系统权限都赋予了一个单一的 root 用户,只给普通用户保留有限的权限.root 用户拥有 ... 
- Java实现IO通信(服务器篇)
		Java实现IO通信(服务器篇) 如何利用java实现我们的通信呢?首先我们了解一下什么是通信?通信的机制是怎样的? 首先来讨论一下什么是通信?通信,指人与人或人与自然之间通过某种行为或媒介进行的信息 ... 
随机推荐
- P6764 [APIO2020] 粉刷墙壁
			思路: 本质上能进行的操作就是我们算出从第 \(i\) 块砖开始,连续刷 \(M\) 块砖,是否有承包商可以刷出期望颜色. 那么设 \(f_i\) 表示 \([i,i+m-1]\) 是否合法,那么就变 ... 
- 国产AI发展是百家争鸣还是疯狂内卷(内耗)?
			本文纯属闲谈(吐槽) 国外搞深度学习弄出了TensorFlow(编译型)以后推到工业界和学术界,但是由于其不好用(太过于复杂),同一时间另一个框架pytorch(非编译型).由于pytorch是非编译 ... 
- 国产操作系统   “银河麒麟操作系统V10”   试用失败历程
			面对外国的科技封锁,具有自主产权的国产软件已经变得迫在眉睫了,几天前在新闻上看到国产的操作"银河麒麟操作系统V10"已经发布,于是抱着尝鲜的心态想着去试着用用.虽然都是基于linu ... 
- 强化学习baseline论文—— rainbow算法中给出实验结果的54个atari2600游戏名称列表
			alien amidar assault asterix asteroids atlantis bank_heist battle_zone beam_rider berzerk bowling bo ... 
- fastDFS安装时,./make.sh编译时出错找不到./make.sh: line 99: perl: command not found
			1.背景 报错如下: 2.解决方案 执行命令: yum -y install zlib zlib-devel pcre pcre-devel gcc gcc-c++ openssl openssl-d ... 
- QWen2-72B-Instruct模型安装部署过程
			最近在给我们的客户私有化部署我们的TorchV系统,客户给的资源足够充裕,借此机会记录下部署千问72B模型的过程,分享给大家! 一.基础信息 操作系统:Ubuntu 22.04.3 LTS GPU: ... 
- SMU 2024 spring 天梯赛自主训练2
			SMU 2024 spring 天梯赛自主训练2 7-1 I Love GPLT - SMU 2024 spring 天梯赛自主训练2 (pintia.cn) PHP 点击查看代码 I L o v e ... 
- quartz监控日志(二)添加监听器
			上一章介绍监控job有三种方案,其实还有一个简单方案是实现quartz的TriggerListener. 上次我也试了这个方案,但是由于操作错误,导致没有监控成功,所以才选择分析源码来实现代理进行监控 ... 
- sublime text _正则表达式01
			概述 sublime 常用正则表达式 预备工作:打开sublime之后,ctrl+h,点选使用正则表达式. (\S+) :匹配所有符号外的字符 用到的地方: 小明 小黄 小红 (构造批量插入sql语句 ... 
- SSH 免密登录 Windows
			安装并启动 OpenSSH 服务器 在开始之前请确保你的远程 Windows 已经安装了 OpenSSH 服务器.若没有安装,请在 设置 > 系统 > 可选功能 > 添加可选功能 中 ... 
