- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
在已经被客户端丢弃的 TCP 套接字上调用 send() 会导致内存访问冲突,因为当我运行我创建的服务器应用程序然后用来自浏览器的请求轰炸它时,它崩溃了在处理大约 7 到 11 个请求之后。具体来说,它接受连接,然后最多等待 10 秒左右,然后 Windows 抛出“此程序已停止工作...”消息。如果我删除 send() 调用,则不会发生此类崩溃,这使我相信 Microsoft 的 send() 不能安全地处理从另一端关闭的套接字。
我知道有多种方法可以检查套接字是否实际上已关闭,但我不想先检查再发送,因为客户端仍有可能在检查和发送之间中断。
编辑:我注意到close() socket directly after send(): unsafe?在“类似问题”框中,虽然它不太适合我的情况,但我现在想知道是否在 send() 之后快速调用 close() 可能是导致问题的原因。
如果是这种情况,涉及检查然后关闭的解决方案将起作用,因为它没有上述含义。但是,我不知道如何检查 closesocket() 是否安全。
编辑:我也希望有一种方法可以检测 send() 实际上已损坏并防止整个应用程序崩溃。
编辑:我想我终于更新了这个问题,考虑到我不久前就发现了这个问题,而且可能会有好奇的人偶然发现这个问题。事实证明,该问题与 send
函数或与套接字相关的任何其他内容无关。事实上,这个问题是我正在做的一件非常愚蠢的事情:在无效指针(NULL
和类似的垃圾数据地址)上调用 free
。几年前,我终于从我最初使用的一个非常过时的版本更新了我的编译器,我想非常过时的标准库实现让我能够摆脱这种令人畏惧的做法,而且看起来什么我认为 send
的问题是它的副作用。
最佳答案
我已经在 WinSock 中编程十多年了,从未见过或听说过 send()
会在失败时抛出异常(事实上,没有任何 Win32 API 函数会在失败时抛出异常) .如果套接字已关闭,则会报告相应的错误代码。所以您的代码中发生了其他事情。也许您传递给 buf
参数的指针未指向有效的内存块,或者您传递给 len
参数的值超出了 的范围>buf
.
关于tcp - winsock2:如果套接字已死,则 send() 失败 [不是真的],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24833314/
我有类似下面的代码: ... id: myComponent signal updateState() property variant modelList: [] Repeater { mo
我正在处理一些我无法展示的私有(private)代码,但我已经制作了一些示例代码来描述我的问题: 主.c: #include #include #include #include typede
这个问题在这里已经有了答案: 关闭10 年前。 Possible Duplicate: what are the differences in die() and exit() in PHP? 我想
在编写 Perl 模块时,在模块内部使用 croak/die 是一个好习惯吗? 毕竟,如果调用者不使用 eval block ,模块可能会使调用它的程序崩溃。 在这些情况下,最佳做法是什么? 最佳答案
我有一些搜索线程正在存储结果。我知道当线程启动时,JVM native 代码会代理在操作系统上创建新 native 线程的请求。这需要 JVM 之外的一些内存。当线程终止并且我保留对它的引用并将其用作
我刚刚花了很多时间调试一个我追溯到 wantarray() 的问题。 .我已将其提炼为这个测试用例。 (忽略 $! 在这种情况下不会有任何有用信息的事实)。我想知道为什么wantarray在第二个示例
我看到一些代码是这样做的: if(something){ echo 'exit from program'; die; } ...more code 和其他只使用 die 的人: if
我正在尝试将此表格用于: 如果任何 $_POST 变量等于任何其他 $_POST 变量抛出错误。 如果只有几个,那不是问题,但我有大约 20 个左右所以如果我想这样做,我将不得不像这样 但这
每次我运行: hadoop dfsadmin -report 我得到以下输出: Configured Capacity: 0 (0 KB) Present Capacity: 0 (0 KB) DFS
我是一名优秀的程序员,十分优秀!