java socket 阻塞模式_关于socket的Accept阻塞模式的退出方法分析

2023-11-18

众所周知,socket的Accept会阻塞当前线程。如果子程序,或者类在被回收时,没有正确的中止socket,则会引发一些异常。我说下常用的一些处理方法:

1.强行中断线程。

这种方法我觉得是最差的,因为强行中断正在执行的线程,可能会引发一些意想不到的结果,这是最差的方法。

2.在Socket上调用Pending()方法。

这种做法的原理就是:

a.看Socket是否有连接请求。如果没有,则返回失败

b.失败后调用Sleep方法等待线程,然后再循环到a

我认为,这也不是一种好的办法,相当于人工进行了可控制的等待,Accept本来就有阻塞功能,这样做不是多此一举吗?

3.在.net程序中用异常捕捉法,如下代码所示:

public void init(int nProt = 9988)

{

tlTcpListen = new TcpListener(IPAddress.Parse("127.0.0.1"), nProt);

tlTcpListen.Start();

Thread client = new Thread(new ThreadStart(DoListen));

client.Start();

}

static void DoListen()

{

try

{

//if (!tlTcpListen.Pending())

TcpClient tcpClient = tlTcpList

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java socket 阻塞模式_关于socket的Accept阻塞模式的退出方法分析 的相关文章

随机推荐

  • android轮播图实现方案,Android轮播图实现教程

    ListView的headerView设置为轮播图之后结合上 下拉刷新 加载的模式成为现在大多数APP的一个必须具备的功能 对于许多初学者来说想要实现轮播图这样一个集线程睡眠 自动处理 替换过程中刷新UI界面的组合功能非常困难 没有思路 感
  • 实验吧 web题--代码审计类

    一 因缺思汀的绕过 1 web题常规套路就是查看源代码 于是右击查看源代码发现 br 构造url http ctf5 shiyanbar com web pcat source txt 查看php代码 2 关键php代码 if mysql
  • [HashMap源码学习之路]---put方法中的hash方法介绍

    HashMap中的put方法中的hash方法 以下是put方法的代码 public V put K key V value return putVal hash key key value false true 当我第一次看到这个地方的时候
  • 2022年,能让你月入过万的5个副业,不信试试

    2021年已经过去了 不管过去的一年 是成功还是失败 一切都过去了 新的一年要开始做新的规划 当务之急 搞钱最为重要 01 自媒体写作 以前我总是觉得会写文章不算什么技能 工作之后才发现 文字功底好优势好大 无论是工作还是做副业 发现会写文
  • 10.29奇偶交换排序

    奇偶交换排序如下所述 第一趟对所有奇数i 将a i 和a i 1 进行比较 第二趟对所有的偶数i 将a i 和a i 1 进行比较 若a i gt a i 1 则将两者交换 第三趟对奇数i 第四趟对偶数i 依次类推直至整个序列有序为止 in
  • Flask 学着用模板 render_template

    上一章节是做到了在本地浏览器上打印出hello world 如果你要更加复杂 可以像下面一样在return结果里添加内容 但是 简单的几句话你可以这么写 要是整的一个网页 你可没法把代码都拖在return后面吧 所以 后面引入了模板功能 模
  • 抽象函数(Java)

    我们现在深入理解一下抽象数据类型背后的理论 这些理论不仅本身很有趣 它们在ADT的设计与实现中也很有意义 如果你能够很好的理解它们 你将会设计出更好的抽象类型 并且远离那些隐晦的陷阱 在研究抽象类型的时候 先思考一下两个值域之间的关系 表示
  • console错误合集

    handlers i call is not a function 从报错的handlers i call 入手查找原因 这个错误是 调用相关的生命周期钩子函数引起来的错误 查看你的页面相关 生命周期钩子函数 是否有 声明了未定义方法 或是
  • 程序员的小浪漫----烟火

    多代码 慎读 预览 完整项目预览 预览地址 属性设计 烟花状态 烟花应有三个状态 升空 等待炸裂 炸裂后 烟花 发射点 x y 爆炸点 xEnd yEnd 升空后等待炸裂时间 wait 炸裂后微粒个数 count 烟花半径 radius 烟
  • 数据产品经理基础之写好报表需求文档

    今天业务部门向我提了个需求 想要在BI上实现一份日报表 并提供了一份日报表的excel文档样例 我为了 敏捷开发 没写需求文档 直接把excel扔给了开发 结果就导致一系列后遗症 首先是开发在写sql的过程频繁确认需求 xxx字段是什么意思
  • 白盒测试相关的一些知识

    在白盒测试中 可以使用各种测试方法进行测试 下面这篇文章 可能比较枯燥 如果不乐意读 可以先收藏 如果在你的工作中真遇到白盒测试的话 可以回过头再来看看 还是值得读一读 一般来说 白盒测试时要考虑以下5个问题 1 测试中尽量先用自动化工具来
  • 数据结构之链表与线性表

    数据结构之链表与线性表 线性表 顺序线性表 顺序表 顺序线性表 使用数组实现 一组地址连续的存储单元 数组大小有两种方式指定 一是静态分配 二是动态扩展 优点 随机访问特性 查找O 1 时间 存储密度高 逻辑上相邻的元素 物理上也相邻 缺点
  • JVM面试FAQ分析

    JVM面试FAQ分析 1 入门部分 1 1为什么要学习JVM 1 2 你了解哪些JVM产品 1 3 JVM的构成有哪几部分 2 类加载部分 2 1 你知道哪些类加载器 2 2 什么是双亲委派类加载模型 2 3 双亲委派方式加载类有什么优势
  • AdaBoost算法

    参考 https www bilibili com video BV1ix411i7yp p 26 机器学习技法 之 聚合模型 Aggregation Model 士杰的博客 CSDN博客 聚合模型
  • Java当中解析ini文件对应到JavaBean当中

    目录 1 ini文件简介 2 ini文件 3 ini解析工具类 4 示例运行结果 1 ini文件简介 ini 文件是Initialization File的缩写 即初始化文件 是windows的系统配置文件所采用的存储格式 统管window
  • 使用Nginx做反向代理超时的问题

    使用Nginx做反向代理时 当被代理服务器没有在指定时间内创建连接 接受请求或返回响应时 Nginx就会断开连接 并返回给客户端 504 Gateway Time out 错误 关于Nginx做反向代理超时 可以通过proxy connec
  • java判断是否为金额

    金额验证 public static boolean isNumber String str java util regex Pattern pattern java util regex Pattern compile 1 9 1 d 0
  • VsCode 常用好用插件/配置+开发Vue 必装的插件

    一 VsCode 常用好用插件 1 实时刷新网页的插件 LiveServer 2 open in browser 支持快捷键与鼠标右键快速在浏览器中打开html文件 支持自定义打开指定的浏览器 包括 Firefox Chrome Opera
  • vue3+tsx+element-plus封装组件总结

    最近在做vue3 plan tsx element plus的项目 tsx在我这里是用来做组件的 以往的开发方式是sfc 就是vue页面的写法
  • java socket 阻塞模式_关于socket的Accept阻塞模式的退出方法分析

    众所周知 socket的Accept会阻塞当前线程 如果子程序 或者类在被回收时 没有正确的中止socket 则会引发一些异常 我说下常用的一些处理方法 1 强行中断线程 这种方法我觉得是最差的 因为强行中断正在执行的线程 可能会引发一些意