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

服务器段的连接端口和监听端口编程实现

        new ServerSocket(int)是开启监听端口,并不是连接端口。真正的连接端口是随机开辟的空闲端口,当连接创建完成后,监听关口可以继续等待下一次连接请求,处于空闲等待状态。

编程实现方式

1 、主线程一直处于阻塞等待状态,如果一旦链接成功则启动一个新线程对外提供服务。
2 、启动工作线程时将链接对象 Socket 传递过去,在 run 方法中执行处理逻辑。

服务器编程实现

public class MyServer {public static void main(String[] args) throws IOException {ServerSocket serverSocket = new ServerSocket(9000);while (true){Socket scoket = serverSocket.accept();new WorkThread(scoket).start();}}
}
class WorkThread extends Thread{private Socket scoket;public WorkThread(Socket scoket){this.scoket = scoket;}@Overridepublic void run() {try {InputStream is = scoket.getInputStream();OutputStream os = scoket.getOutputStream();BufferedReader br = new BufferedReader(new InputStreamReader(is));PrintWriter out = new PrintWriter(os);String str = br.readLine();out.println("收到"+str);out.flush();out.close();br.close();scoket.close();} catch (IOException e) {System.out.println(e.getMessage());}}
}

客户端编程实现

public class MyClient {public static void main(String[] args) throws IOException {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));System.out.println("你想给服务器说:");String str1 = br.readLine();Socket socket = new Socket("localhost",9001);System.out.println(socket.getInetAddress());System.out.println(socket.getPort());InputStream is = socket.getInputStream();OutputStream os = socket.getOutputStream();BufferedReader br2= new BufferedReader(new InputStreamReader(is));PrintWriter out = new PrintWriter(os);out.println(str1);out.flush();String str2 = br2.readLine();System.out.println(str2);br2.close();out.close();br.close();}
}

相关文章:

服务器段的连接端口和监听端口编程实现

new ServerSocket(int)是开启监听端口,并不是连接端口。真正的连接端口是随机开辟的空闲端口,当连接创建完成后,监听关口可以继续等待下一次连接请求,处于空闲等待状态。 编程实现方式 1 、主线程一直处于阻塞等待状态&#xff0c…...

用“定时执行专家”武装你的电脑,做时间管理大师!

简介 你是否厌倦了重复繁琐的电脑操作?你是否希望能够解放双手,提高工作效率?“定时执行专家”是一款功能强大的定时任务执行软件,可以帮你轻松实现自动化办公,让你成为时间管理大师! 软件功能 支持25种任…...

css3实现3D立方体旋转特效源码

源码介绍 CSS3自动旋转正方体3D特效是一款基于css3 keyframes属性制作的图片相册自动旋转立方体特效 效果展示 下载地址 css3实现3D立方体旋转特效代码...

计算器系统基础知识-校验码

1.奇偶校验码 通过在编码中增加一位奇数校验位来使编码中1的个数为奇数(奇校验)或者为偶数(偶校验),从而使码距变为2。   常见的奇偶校验码有三种:水平奇偶校验码、垂直奇偶校验码和水平垂直校验码。   以下是奇偶校验码的示例: public …...

springboot换日志框架后爆SLF4J: Class path contains multiple SLF4J bindings的解决办法

sringboot原本使用的是logback日志框架,将它去掉,修改为log4j2日志框架后,往往会出现以下错误: SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/C:/Users/admin/.m2/repository/ch/qos…...

k8s+zabbix

一,环境: 1),k8s部署,master和node节点都部署成功 二,部署: 1),安装python3(资源中有) wget https://www.python.org/ftp/python/3.7.4/Python-…...

k8s-生产级的k8s高可用(2) 25

部署containerd k8s2、k8s3、k8s4在配置前需要重置节点(reset)在上一章已完成 禁用所有节点docker和cri-docker服务 所有节点清除iptables规则 重置后全部节点重启 由于之前部署过docker,因此containerd默认已安装 修改配置 启动containe…...

ubuntu20.04 创建ros环境、创建rospackage

roswiki教程:https://wiki.ros.org/cn/ROS/Tutorials 环境准备 安装ros环境 这里选择noetic版本的ros,安装步骤参考:https://zhuanlan.zhihu.com/p/662284005 创建工作空间 这里我在用户目录下创建catkin的工作目录catkin_ws &#xff0…...

QT进阶---------pro项目文件中的常用命令 (第三天)

1、命令一 决定exe可执行程序的生成路径CONFIG 作用:不使用默认路径,方便移植 CONFIG(debug, debug|release) {DESTDIR $$_PRO_FILE_PWD_/../../../debugXXXsystem } else {DESTDIR $$_PRO_FILE_PWD_/../../../realeaseXXXsystem } 是用于 Qt 项目…...

php常用设计模式应用场景及示例

单例模式 含义描述 应用程序中最多只有该类的一个实例存在 应用场景 常应用于数据库类设计,采用单例模式,只连接一次数据库,防止打开多个数据库连接。 代码示例 class Singleton {private static $instance; // 定义一个私有的静态变量保存…...

浏览器与服务器通信过程(HTTP协议)

目录 1 概念 2 常见的 web 服务器有 3 浏览器与服务器通信过程 3.1 DNS 3.2 URL 4 HTTP请求方法和应答状态码 4.1 HTTP请求报文段实例 4.2 HTTP请求方法 5 HTTP应答报头和应答状态 5.1 HTTP的应答报头结构 5.2 HTTP的应答状态 1 概念 浏览器与 web 服务器在应用层通…...

Pytorch搭建AlexNet 预测实现

1.导包 import torch import matplotlib.pyplot as plt import json from model import AlexNet from PIL import Image from torchvision import transforms 2.数据预处理 data_transform transforms.Compose([transforms.Resize((224, 224)), # 将图片重新裁剪transform…...

笔记:使用parfile进行的数据导入导出

expdp ‘username/password’ parfileE:\dmp_tmp\par.txt DIRECTORYdmptmp LOGFILESYS_SEND_LOG.log DUMPFILESYS_SEND_LOG.dmp tablesSYS_SEND_LOG_BAK query“where send_dt>TO_DATE(‘2024-03-13’,‘yyyy-mm-dd’)” impdp ‘username/password’ directorydmptmp dum…...

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的行人跌倒检测系统(深度学习+UI界面+完整训练数据集)

摘要:开发行人跌倒检测系统在确保老年人安全方面扮演着至关重要的角色。本篇文章详尽地阐述了如何利用深度学习技术构建一个行人跌倒检测系统,并附上了完整的代码实现。该系统采用了先进的YOLOv8算法,并对YOLOv7、YOLOv6、YOLOv5等先前版本进…...

Ubuntu 14.04:PaddleOCR基于PaddleServing的在线服务化部署(失败)

一、 二、安装 注: 安装 PaddleOCR 2.3 。 因为 PaddleOCR 2.4 的 推荐环境 PaddlePaddle > 2.1.2。 https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.4/doc/doc_ch/environment.md 安装前的环境准备 在使用Paddle Serving之前,需要完…...

Java JUC 笔记(2)

Java JUC 笔记(2) 锁框架 JDK5以后增加了Lock接口用来实现锁功能,其提供了与synchronized类似的同步功能,但是在使用时手动的获取和释放锁 Lock和Condition锁 这里的锁与synchronized锁不太一样,我们可以认为是Loc…...

webpack5高级--02_提升打包构建速度

提升打包构建速度 一、HotModuleReplacement 为什么 开发时我们修改了其中一个模块代码,Webpack 默认会将所有模块全部重新打包编译,速度很慢。 所以我们需要做到修改某个模块代码,就只有这个模块代码需要重新打包编译,其他模…...

MAC M芯片 Anaconda安装

Anaconda安装 1.M芯片下载AnaConda 1.M芯片下载AnaConda https://www.anaconda.com/download 安装完成 conda的版本是24.1.2...

【JS】自动下拉网页刷新,当出现指定关键字,就打印出来

批量检查域名是否可以注册 1、有的网站数据是通过下拉发生请求,间隔x毫秒自动下拉 2、查找某个关键字,找到就打印出来 3、打印数据自动去重 4、当连续n次下拉,没有新div元素出来,就停止该循环 var map {}; var count 0; var l…...

中兴通讯联手新疆移动,开通全疆首个乡农场景700M+900M双频双模基站

日前,在新疆博尔塔拉蒙古自治州,中兴通讯携手新疆移动共同完成了全疆首个乡农场景的700M900M双频双模基站建设,其通过采用“700M与900M共天馈共RRU设备”,成功实现乡农4/5G网络的同站址快速部署,为新疆的农牧业发展注入…...

国防科技大学计算机基础课程笔记02信息编码

1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

线程同步:确保多线程程序的安全与高效!

全文目录&#xff1a; 开篇语前序前言第一部分&#xff1a;线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分&#xff1a;synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

反射获取方法和属性

Java反射获取方法 在Java中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时访问和操作类的内部属性和方法。通过反射&#xff0c;可以动态地创建对象、调用方法、改变属性值&#xff0c;这在很多Java框架中如Spring和Hiberna…...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点&#xff0c;但无自动故障转移能力&#xff0c;Master宕机后需人工切换&#xff0c;期间消息可能无法读取。Slave仅存储数据&#xff0c;无法主动升级为Master响应请求&#xff…...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程&#xff1a;首先由HR先筛选一部分简历后&#xff0c;在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如&#xff1a;Boss直聘&#xff08;招聘方平台&#xff09; 直接按照条件进行筛选 例如&#xff1a…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码&#xff0c;实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

云原生玩法三问:构建自定义开发环境

云原生玩法三问&#xff1a;构建自定义开发环境 引言 临时运维一个古董项目&#xff0c;无文档&#xff0c;无环境&#xff0c;无交接人&#xff0c;俗称三无。 运行设备的环境老&#xff0c;本地环境版本高&#xff0c;ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...

uniapp 小程序 学习(一)

利用Hbuilder 创建项目 运行到内置浏览器看效果 下载微信小程序 安装到Hbuilder 下载地址 &#xff1a;开发者工具默认安装 设置服务端口号 在Hbuilder中设置微信小程序 配置 找到运行设置&#xff0c;将微信开发者工具放入到Hbuilder中&#xff0c; 打开后出现 如下 bug 解…...