CSocket - DataArrival 未发生(GET 请求)

Posted

技术标签:

【中文标题】CSocket - DataArrival 未发生(GET 请求)【英文标题】:CSocket - DataArrival Not Occurring (GET Request) 【发布时间】:2012-06-25 03:35:03 【问题描述】:

我正在尝试使用 CSocket 在 VB6 中执行 GET 请求。数据发送成功,但未收到响应(在多个站点上测试)。我的代码如下。

Option Explicit
Dim WithEvents WinSock As CSocket

Private Sub Form_Load()
Set WinSock = New CSocket
End Sub

Private Sub btnConnect_Click()
WinSock.Protocol = sckTCPProtocol
WinSock.Connect "winhome.de", 80

MsgBox "Connecting..."
End Sub

Private Sub WinSock_OnConnect()
MsgBox "Connected."

Dim Data$
Data = "GET http://www.winhome.de/index.html HTTP/1.0" & vbCrLf & "Accept: */*" & _
vbCrLf & "Accept: text/html" & vbCrLf & vbCrLf

WinSock.SendData Data
MsgBox Data
End Sub

Private Sub WinSock_OnDataArrival(ByVal bytesTotal As Long)
Dim Data$
WinSock.GetData Data, vbString
MsgBox Data
End Sub

OnConnect 事件似乎永远不会触发,但与普通 WinSock 控件一起工作正常,有帮助吗?

【问题讨论】:

【参考方案1】:

对于这些场景,您不希望进行任何“阻塞”调试,包括 MsgBox 或 IDE 中断——事件会丢失。

例如将调试日志累积到字符串或文件中,并在运行后查看结果。

【讨论】:

以上是关于CSocket - DataArrival 未发生(GET 请求)的主要内容,如果未能解决你的问题,请参考以下文章

CSocket::OnReceive 同时调用

如何在 MFC 中为 CSocket 创建一个套接字数组?

CSocket::Send 是不是存在性能问题?

将 CSocket 传递给 std::thread

CSocket服务器

基于CSOCKET的Client简单实例(转)