用VB的Winsock来发送http请求头,请指教!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用VB的Winsock来发送http请求头,请指教!相关的知识,希望对你有一定的参考价值。

发送HTTP请求头,接收到的If-Modified-Since字段值据说可以判断一个页面是否更新,是真的吗?我只有思路,用VB怎么构造http请求头都不知道,大虾们指教下!(我的初衷是:设计一个监视网页更新的工具,用来抢沙发的!一路问高手们,终于有了点思路,但是不知道怎么实现?)

参考技术A 你又发了一个帖子问了,真不好意思不给你个例子了,两边都给你回了,就是C++的,你尽量看吧 char* reqPtr=new char[2048];
memset(reqPtr,0,2048);
strcpy(reqPtr,"GET ");
//strcat(reqPtr,uri);
strcat(reqPtr,"/index.html");
strcat(reqPtr," HTTP/1.1\r\n");
strcat(reqPtr,"Accept: text/html, text/vnd.wap.wml, image/vnd.wap.wbmp, image/gif, image/jpeg, application/vnd.wap.wmlscriptc, text/vnd.wap.wmlscript, *.*\r\n"); strcat(reqPtr,"If-Modified-Since:2009:11:5\r\n"); // 这句是我临时给你写上的,具体情况你自己在VB中调试
strcat(reqPtr,"Accept-Language: zh-cn\r\n");
strcat(reqPtr,"Accept-Charset: utf-8, *;q=0.1\r\n");
strcat(reqPtr,"Accept-Encoding: identity, *;q=0\r\n");strcat(reqPtr,"User-Agent: Opera/9.62 (Windows NT 5.1; U;zh-cn) Presto/2.1.1\r\n");strcat(reqPtr,"Connection: Keep-Alive\r\n\r\n");iSocket->Send(reqPtr,strlen(reqPtr)); //这是我自己封装的一个类 就这么构造数据,另外你可以使用抓包工具抓取数据包看一下

VB6 中的 Winsock 控件只向数组中的最后一个索引发送文本消息

【中文标题】VB6 中的 Winsock 控件只向数组中的最后一个索引发送文本消息【英文标题】:Winsock Control in VB6 Only send text messages to the last index in an array 【发布时间】:2014-07-06 05:47:53 【问题描述】:

这可能是一个多年的话题,但我真的不知道如何解决这个问题。

所以我在 vb6 中开始了一个项目,使用 winsock 控件从连接在 LAN 上的计算机发送和接收消息。

在我的项目中,我包含了两个 Winsock 控件,即 con 和 conn。 con 将监听连接请求并让 conn 接受请求,因此 conn 在一个数组中接受来自客户端的多个请求

Private Sub con_ConnectionRequest(ByVal requestID As Long)
    If conn(0).State = sckClosed Then
        conn(0).Accept requestID
    Else
        Load conn(socknum)
        conn(socknum).Accept requestID
    End If
    socknum = socknum + 1
End Sub

现在有多个客户端连接,客户端可以向主机发送消息,但主机只能向 conn 的最后一个索引发送文本消息,或者最后连接的客户端将是唯一可以接收来自的消息的客户端主人。

Private Sub txtSend_KeyPress(KeyAscii As Integer)
    Dim n As Integer
        If KeyAscii = 13 Then
            If ishost = True Then
                For n = 0 To conn.UBound
                   If conn(n).State = sckConnected Then
                       conn(n).SendData txtSend
                   End If
                Next n
            Else
                con.SendData txtSend
            End If
            txtMessages.Text = txtMessages.Text & vbCrLf & txtSend.Text
        End If
End Sub

我无法弄清楚我的代码有什么问题,因此非常感谢您提供一些帮助或提示。

【问题讨论】:

【参考方案1】:

变量ishost在哪里定义? 能否请您发布该代码?

另外,请发布为 ishost 赋值的代码。

变量socknum在哪里定义? 你能把那个代码贴出来吗? socknum 是否在其他任何地方使用?

调试:在 For n = 0 的行上放置一个断点到 conn.UBound 并使用 F8 逐步执行。 执行是否到达这条线? conn.UBound的值是多少?

【讨论】:

以上是关于用VB的Winsock来发送http请求头,请指教!的主要内容,如果未能解决你的问题,请参考以下文章

VB6 Winsock 能够发送非常大的有效载荷

winsock控件的TCP和UDP协议的判断问题

VB6.0的winsock控件用UDP局域网广播数据,当数据很大时接收方报10040--数据包太大,请问怎么处理。

winsock多IP发送数据vb6

vb6 - 将消息发送到winsock服务器聊天

vb以二进制打开excel后用winsock发送,结果接收后打开的是乱码,发送别的文件没问题,为啥?