当前位置: 首页 > 面试题库 >

Windows和Linux上带有bind()的“使用中的地址”之间的区别-errno = 98

左丘兴生
2023-03-14
问题内容

我有一个侦听端口的小型TCP服务器。在调试时,我通常会CTRL-C服务器以终止进程。

在Windows上,我可以快速重新启动服务,并且套接字可以重新启动。在Linux上,我必须等待几分钟,然后bind()成功返回

当bind()失败时,它返回errno = 98,正在使用的地址。

我想更好地了解实现之间的差异。Windows肯定对开发人员更友好,但是我有点怀疑Linux在做“错误的事情”。

我最好的猜测是Linux等待所有可能的客户端检测到旧套接字已损坏,然后再允许创建新套接字。唯一的方法就是等待他们超时

有没有办法在Linux开发过程中更改此行为?我希望复制Windows执行此操作的方式


问题答案:

您要SO_REUSEADDR在Linux上的套接字上使用该选项。相关的联机帮助页是socket(7)。这是一个用法示例。解释了会发生什么。

在Linux上,SO_REUSEADDR除非存在活动连接,否则允许您绑定到地址。在Windows上,这是默认行为。在Windows上,SO_REUSEADDR允许您另外将多个套接字绑定到相同的地址。看到这里和这里了解更多。



 类似资料:
  • 问题内容: 这2个Linux错误之间有什么区别?23和24 我尝试了2个不同的站点,但无法理解两者之间的区别。 另外,我收到错误号24,套接字调用在974次失败。(UDP数据报套接字) 当我执行a时,我看到的值334076 ulimit -n显示1024 知道如何增加限制吗? 问题答案: 对于1)两个错误代码都与打开的文件过多的情况有关。EMFILE在您的进程中打开了太多文件。ENFILE是在整个

  • 本文向大家介绍IP地址和MAC地址之间的区别,包括了IP地址和MAC地址之间的区别的使用技巧和注意事项,需要的朋友参考一下 MAC地址和IP地址,都用于识别网络或Internet上的计算机。MAC地址由NIC卡的制造商提供,并提供计算机的物理地址。IP地址由Internet服务提供商提供,被称为网络上连接的计算机的逻辑地址。 以下是MAC地址和IP地址之间的一些重要区别。 序号 键 MAC地址 I

  • 问题内容: 基本上,我想知道在使用带有或不带有外键的REFERENCES之间的区别。 我有以下两个示例: 范例2: 我要问的是,为什么第二个示例为什么使用FOREIGN KEY关键字,而第一个示例仅使用REFERENCES。 另外,第一个似乎引用了自己(我认为Employees中的s是一个错误)。如果是这样,如果引用自己,为什么要使用REFERENCES? 问题答案: 恭喜你!您偶然发现了MySQ

  • 本文向大家介绍静态IP地址和动态IP地址之间的区别,包括了静态IP地址和动态IP地址之间的区别的使用技巧和注意事项,需要的朋友参考一下 静态IP地址和动态IP地址都用于标识网络或Internet上的计算机。静态IP地址由Internet服务提供商提供,并且在系统连接到网络之前一直保持固定。动态IP地址由DHCP提供,通常公司会获得一个静态IP地址,然后为其在组织网络内的计算机生成动态IP地址。 以

  • 本文向大家介绍Linux和Unix之间的区别,包括了Linux和Unix之间的区别的使用技巧和注意事项,需要的朋友参考一下 的Linux Linux是开源的多任务,多用户操作系统。它最初由Linus Torvalds于1991年开发。LinuxOS被广泛用于台式机,移动设备,大型机等。 的Unix Unix是多任务,多用户操作系统,但不是免费使用的也不是开源的。它是由AT&T贝尔实验室的Ken T

  • 问题内容: 我 似乎 明白了: API已原型化,您将程序与librt(-lrt)链接,而API中和您的程序已与libaio(-laio)链接。 我不知道的是: 1.内核对这两种方法的处理方式是否不同? 2. 使用这两个标志是否强制性的? 正如提到的这个帖子,libaio的工作正常不使用时.Okay,理解,但: 据R.Love的 Linux的系统编程 的书,Linux支持 AIO (我假设是POSI