首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >cURL - Linux上的“挂起”套接字连接

cURL - Linux上的“挂起”套接字连接
EN

Stack Overflow用户
提问于 2010-02-22 09:26:56
回答 2查看 3.5K关注 0票数 1

我有一个发送POST请求到服务器的程序。

我正在使用cURL发送请求。

我的程序可以在Windows和Linux上运行(目前是Ubuntu 9.10)。

当服务器收到请求时,对其进行处理,并返回错误代码(如果没有错误,则返回0000)和错误描述(如果有)。

服务器的web服务器是Microsoft IIS。

当我在Windows上运行我的程序时,它工作得很好。

但是当我在Linux上运行这个程序时,它挂起了30秒(cURL的超时),并返回错误"Operation timed out after 30000毫秒with 5 bytes received“。

据我所知,服务器端的问题--服务器没有发送响应的大小,也没有关闭套接字连接。

cURL日志(来自Linux):

代码语言:javascript
运行
复制
11:00:09.544    Process()       curl: libcurl/7.19.5 OpenSSL/0.9.8g zlib/1.2.3.3 libidn/1.15
11:00:09.941    DebugCallback() About to connect() to sms1.redoxygen.net port 80 (#0)
11:00:09.941    DebugCallback() Trying 203.145.62.146...
11:00:10.084    DebugCallback() Connected to sms1.redoxygen.net (203.145.62.146) port 80 (#0)
11:00:10.085    DebugCallback() POST /sms.dll?private&type=26 HTTP/1.1
                                Host: sms1.redoxygen.net
                                Content-Length: 244
11:00:10.086    DebugCallback() [244 bytes of DATA]
11:00:10.087    ReadCallback()  No more data to send
11:00:10.292    WriteCallback() HTTP/1.1 200 OK
11:00:10.293    DebugCallback() Content-Type: text/html
11:00:10.294    DebugCallback() no chunk, no close, no size. Assume close to signal end
11:00:10.294    WriteCallback() 
11:00:10.466    DebugCallback() 0000 
11:00:40.500    DebugCallback() Operation timed out after 30000 milliseconds with 5 bytes received
11:00:40.501    DebugCallback() Closing connection #0

在Windows上的日志几乎是相同的,但没有超时-它在收到"0000“后立即关闭套接字。

如果我得到"0000 ",我可以分析收到的数据并关闭连接,但这是一个“肮脏的黑客”。

有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-02-25 11:28:26

我找到了问题的原因。

原因是- VirtualBox。

我正在使用VirtualBox来运行Ubuntu。如果我在真实(不是虚拟) PC上运行我的程序,它工作得很好(即使是在Ubuntu上)。看起来在最新版本的VirtualBox中有一个bug。

票数 0
EN

Stack Overflow用户

发布于 2010-02-22 16:55:09

您的问题没有揭示如何使用libcurl,因此,如果没有大量猜测,就不容易准确地回答这个问题。我还假设,一些缺失的细节将揭示为什么这款应用在Linux和Windows上的工作方式不同。

您的请求发送的内容长度为244,但是您显示的输出不包含任何请求正文,为什么?在我看来,服务器正在合法地等待数据到达,但是您没有提供它。

所以,你发送了一个奇怪的请求。服务器会回复一个奇怪的响应。垃圾进,垃圾出我猜。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2308282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档